2016-09-26 3 views
0

Ich möchte wissen, ob es einen Weg gibt, wo ich sowohl Asp.Net Identity mit Owin und Office 365 Owin Login gleichzeitig verwenden kann?Asp.Net Identität Authentifizierung mit Office365 App

Im Grunde möchte ich einen Web-Hook erstellen, der in Exchange-Posteingang von Benutzern einrastet. Wenn diese Nachrichten ankommen, muss ich etwas verarbeiten und grundsätzlich eine Benachrichtigung senden.

Ich bin in der Lage, erfolgreich eine Office 365 App zu erstellen; Ich habe die clientId und die clientSecret beide in meine Web.Config Datei.

Ich benutze Asp.Net MVC5 und ich bin in der Lage, eine Ansicht zu haben, die im Grunde eine Schaltfläche hat und sagt "Click to Subscribe" .. das wäre dann idealerweise öffnen Sie die Office 365-Anmeldung und mein Benutzer würde mit einem Einverständnisformular präsentiert werden.

Obwohl wenn Benutzer zunächst auf der Website anmelden, verwende ich Owin mit Asp.Net Identity.

Wenn ich versuche, den Office 365 Login zu erleichtern; Diese beiden Zeilen kehren zurück null. Ich habe das Tutorial give here auf Github verfolgt. So kann ich mich mithilfe der Graph-API am Exchange-Postfach anmelden. Aber ich habe Probleme mit der Einverständniserklärung? Irgendwelche Gedanken?

Dies sind die beiden Linien von verdächtigem Code:

 var signInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value; 
     var userObjectId = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value; 

Die signInUserId gibt mir das Asp.Net UserId Feld für den Benutzer nach zurück. Ich habe das Gefühl, ich mache etwas völlig dummes & unvollständig.

Antwort

0

In diesem Szenario müssen Sie zwei Ansätze berücksichtigen.

  • Sie können OWIN einrichten OpenIDConnectAuthentication zu verwenden, und wenn der Benutzer klickt abonnieren, geben Sie eine Challenge von Ihrer App. OWIN leitet den Benutzer zur Anmeldung, Zustimmung und dann zurück zu Ihrer Anwendung. Sie können dann die in der Middleware verfügbaren Benachrichtigungen verwenden, um den Autorisierungscode zu erfassen, für ein Zugriffstoken auszutauschen und die Token für die spätere Verwendung zwischenzuspeichern. This code sample zeigt, wie das geht. Der Schlüssel besteht darin, die Authentifizierungspipeline zu beenden, indem in der Benachrichtigung HandleResponse() aufgerufen wird, wodurch die OpenIDConnect-Anmeldungspipeline angehalten und die ASP.NET-Identität intakt gelassen wird.
  • Sie können eine OAuth-Anforderung selbst erstellen, ohne die OWIN-Pipeline zum Auslösen & zu verwenden, um die Anforderung/Antwort abzufangen. This sample zeigt Ihnen, wie Sie dies mit der ADAL-Bibliothek tun. Ich empfehle diesen Ansatz, es ist ein bisschen einfacher.
Verwandte Themen