Wir schreiben einen WCF-Dienst, der in Dynamics CRM 2016 Online integriert werden muss. Ich versuche, mithilfe von ADAL mit der Methode AcquireTokenAsync()
zu authentifizieren. Das Problem besteht darin, dass ein Popup-Fenster angezeigt wird, in dem der Benutzer nach Anmeldeinformationen gefragt wird. Natürlich ist unsere Anwendung eine Dienstleistung, das ist nicht was wir wollen. Wir haben nach einer Möglichkeit zur Authentifizierung gesucht, ohne diese Popup-Box zu haben.C# ADAL AcquireTokenAsync() ohne Popup-Feld
Es gibt eine Klasse namens AuthenticationContextIntegratedAuthExtensions
, die mit "Benutzername/Passwortfluss" helfen soll. Es hat die einzige Methode AcquireTokenAsync
, die die Popup-Box unterdrückt, aber wir haben keine Möglichkeit gefunden, das Passwort an sie zu übergeben. Wenn nur der Benutzername ausgeführt wird, wird die Ausnahme ausgelöst, die im Wesentlichen besagt, dass "kein Kennwort angegeben wurde".
Hat jemand eine Idee, wie man das umgeht? Muss nicht einmal ADAL sein. Nur etwas, um das OAuth-Token zu erhalten.
Ja. Das Passwortfeld wurde aus welchem Grund auch immer entfernt. Tatsächlich haben wir keine Klasse oder Methode gefunden, die etwas mit Passwörtern zu tun hat. Einige Klassen haben einen Konstruktor, der den Benutzernamen UserIdentifier akzeptiert. Der Zweck scheint jedoch eher die automatische Vervollständigung als der Versuch einer stillen Authentifizierung zu sein. – eltaro
Richtig, ich bin mir nicht sicher, warum es auch entfernt wurde (dieser Blog http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authentica-user-vy-usernamespassword/ ist das, an das ich mich erinnere, als ich es zum ersten Mal gelesen habe. Aber wenn Sie die oben genannte spezifische Version verwenden, können Sie sich ohne ein Popup authentifizieren und das Token funktioniert für Anfragen gegen CRM. –
Scheint so, als müssten wir Ihre Lösung verwenden. Die eine, die ich hier gepostet habe, lässt uns nicht auf das CRM zugreifen und gibt 401 Fehler. – eltaro