0

Ich habe eine sehr spezifische Setup:MS-CRM 2016 - Authentifizieren gegen AD Azure als Vertrauliches/Daemon mit angemeldeten Benutzern, NO REDIRECT


Angemeldete In CRM Benutzer - Client-Script

macht RestCall zu

MyRestServer (Node.js)

macht WebAPI-Cal l

CRM


HINWEIS: Noch keine User-Redirect (kein adal)! alles muss „unter der Haube“ arbeiten, muss der Benutzer nicht einloggen oder etwas (wie er schon ist)


MyRestServer will der angemeldeten In CRM-Benutzer in Namen Anfragen an die CRM abzufeuern

Was ich erreicht:

  • MyRestServer einen statischen Benutzernamen hat, pw, clientId, clientsecret und erwirbt ein Token für ein Admin-Benutzer.
  • mit dem aquired Token kann ich eine Operation auslösen auf dem WEB-API
  • Aber ich mag als angemeldeten Benutzer handeln (mit seinen Einschränkungen)

Wie kann ich das erreichen? Da ich den Benutzernamen und das Passwort des angemeldeten Benutzers nicht erhalten kann.

Ich kann keine Informationen MyRestServer senden den Browser (wie Token) bietet, aber ich weiß nicht, wie ich kann verwandeln/werten sie als MyRestServer zu handeln mit angemeldeten Benutzer Rechte

Antwort

1

Wenn Sie AAD verwenden zu authentifizieren Ihre Benutzer oder wenn Ihr CRM OAuth 2.0-Flow verwendet, um Ihre Benutzer zu authentifizieren. Nachdem der Benutzer die Authentifizierung abgeschlossen hat, können Sie seine Zugriffstoken abrufen. Welches sollte im JWT-Format sein. Sie können beliebige JWT-Module zum Decodieren der Zugriffstoken verwenden. Sie können die Nutzlast der Benutzer erhalten.

E.G., wenn Ihr Authentifizierungsablauf OAuth 2.0 verwendet, können Sie die Zugriffstokens im folgenden Format erhalten, eyJ0....eyJh....xyz...., können Sie die Nutzlast schnell auf https://jwt.io/ dekodieren.

In node.js können Sie das Token mithilfe von https://github.com/auth0/node-jsonwebtoken decodieren.

var jwt = require('jsonwebtoken'); 
token= '<access_token>'; 
var decoded = jwt.decode(token); 

// get the decoded payload and header 
var decoded = jwt.decode(token, {complete: true}); 
console.log(decoded.header); 
console.log(decoded.payload) 
+0

Ich sehe nicht, wie dies hilft, mit meinem externen Server als der angemeldete Benutzer zu handeln. Ich kann weder das Token von ihm benutzen noch es verändern (weil es ungültig werden würde). Siehe http://www.cloudidentity.com/blog/2014/03/03/principles-of-token-validation/. Es ist auch nicht möglich den Header actOnBehalf zu setzen (ich habe es versucht). Ich denke, es ist einfach nicht möglich – IntegerWolf

Verwandte Themen