Authentifizieren eines Benutzers mit einem Identitätstoken für Exchange

Mithilfe von Exchange-Benutzeridentitätstoken kann Ihr Add-In einen Add-In-Benutzer eindeutig identifizieren. Durch Erstellen einer Benutzeridentität können Sie ein SSO-Authentifizierungsschema (Single Sign-On, einmaliges Anmelden) für Ihren Back-End-Dienst implementieren, der es Kunden, die Outlook-Add-Ins verwenden, ermöglicht, eine Verbindung zu Ihrem Dienst herzustellen, ohne sich anzumelden. In diesem Artikel sehen wir uns eine vereinfachte Methode der Verwendung des Exchange-Benutzertokens zur Authentifizierung eines Benutzers bei Ihrem Back-End an.

Wichtig

Dies ist nur ein einfaches Beispiel für eine SSO-Implementierung. Wie immer, wenn es um Identität und Authentifizierung geht, müssen Sie sicherstellen, dass Ihr Code die Sicherheitsanforderungen Ihrer Organisation erfüllt.

Senden der Token-ID in jeder Anforderung

Der erste Schritt besteht darin, dass das Add-In das Exchange-Benutzeridentitätstoken abruft, indem GetUserIdentityTokenAsync aufgerufen wird. Das Add-in sendet dieses Token dann mit jeder Anforderung, die an Ihr Back-End gestellt wird. Dies kann in einer Kopfzeile oder als Teil des Anforderungstexts der Fall sein.

Überprüfen des Tokens

Das Back-End MUSS das Token überprüfen, bevor es dieses akzeptiert. Dies ist ein wichtiger Schritt, um sicherzustellen, dass das Token vom Exchange-Server des Benutzers ausgegeben wurde. Informationen zur Überprüfung von Exchange-Benutzeridentitätstoken finden Sie unter Überprüfen eines Exchange-Identitätstokens.

Nach Überprüfung und Decodierung sieht die Nutzlast des Tokens in etwa wie folgt aus:

{ 
    "aud" : "https://mailhost.contoso.com/IdentityTest.html",
    "iss" : "00000002-0000-0ff1-ce00-000000000000@mailhost.contoso.com",
    "nbf" : "1505749527",
    "exp" : "1505778327",
    "appctxsender":"00000002-0000-0ff1-ce00-000000000000@mailhost.context.com",
    "isbrowserhostedapp":"true",
    "appctx" : {
        "msexchuid" : "53e925fa-76ba-45e1-be0f-4ef08b59d389",
        "version" : "ExIdTok.V1",
        "amurl" : "https://mailhost.contoso.com:443/autodiscover/metadata/json/1"
    } 
}

Zuordnen des Tokens zu einem Benutzer in Ihrem Back-End

Der Back-End-Dienst kann eine eindeutige Benutzer-ID aus dem Token berechnen und diese einem Benutzer in Ihrem internen Benutzersystem zuordnen. Wenn Sie eine Datenbank zum Speichern von Benutzern verwenden, können Sie diese eindeutige ID zu dem Datensatz des Benutzers in der Datenbank hinzufügen.

Generieren einer eindeutigen ID

Es wird empfohlen, dass Sie eine Kombination aus der msexchuid- und der amurl-Eigenschaft verwenden. Sie können zum Beispiel die beiden Werte verketten und eine base64-codierte Zeichenfolge generieren. Dieser Wert kann jedes Mal zuverlässig aus dem Token generiert werden, Sie können also ein Exchange-Benutzeridentitätstoken wieder dem Benutzer in Ihrem System zuordnen.

Überprüfen des Benutzers

Nachdem Sie die eindeutige ID generiert haben, besteht der nächste Schritt darin, anhand dieser zugewiesenen ID in Ihrem System nach einem Benutzer zu suchen.

  • Wenn der Benutzer gefunden wird, behandelt das Back-End die Anforderung als authentifiziert, und die Anforderung kann fortgesetzt werden.
  • Wenn der Benutzer nicht gefunden wird, gibt das Back-End einen Fehler zurück, der angibt, dass der Benutzer sich anmelden muss. Das Add-In fordert den Benutzer dann auf, sich beim Back-End mithilfe der vorhandenen Authentifizierungsmethode anzumelden. Nachdem der Benutzer authentifiziert wurde, wird das Exchange-Benutzeridentitätstoken mit den Benutzerauthentifizierungsdetails übermittelt. Das Back-End kann dann den Datensatz des Benutzers in Ihrem System mit der eindeutigen ID aktualisieren.