Authentifizieren eines Benutzers mit einem Identitätstoken für ExchangeAuthenticate a user with an identity token for Exchange

Mithilfe von Exchange-Benutzeridentitätstoken kann Ihr Add-In einen Add-In-Benutzer eindeutig identifizieren.Exchange user identity tokens provide a way for your add-in to uniquely identify an add-in user. 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.By establishing the user's identity, you can implement a single sign-on (SSO) authentication scheme for your back-end service that enables customers who are using Outlook add-ins to connect to your service without logging in. In diesem Artikel sehen wir uns eine vereinfachte Methode der Verwendung des Exchange-Benutzertokens zur Authentifizierung eines Benutzers bei Ihrem Back-End an.In this article, we'll take a look at a simplistic method of using the Exchange identity token to authenticate a user to your back-end.

Wichtig

Dies ist nur ein einfaches Beispiel für eine SSO-Implementierung.This is just a simple example of an SSO implementation. Wie immer, wenn es um Identität und Authentifizierung geht, müssen Sie sicherstellen, dass Ihr Code die Sicherheitsanforderungen Ihrer Organisation erfüllt.As always, when you're dealing with identity and authentication, you have to make sure that your code meets the security requirements of your organization.

Senden der Token-ID in jeder AnforderungSend the ID token with each request

Der erste Schritt besteht darin, dass das Add-In das Exchange-Benutzeridentitätstoken abruft, indem GetUserIdentityTokenAsync aufgerufen wird.The first step is for your add-in to obtain the Exchange user identity token by calling getUserIdentityTokenAsync. Das Add-In sendet dieses Token dann mit jeder Anforderung, die an Ihr Back-End gestellt wird.Then the add-in sends this token with every request it makes to your back-end. Dies kann in einer Kopfzeile oder als Teil des Anforderungstexts der Fall sein.This could be in a header, or as part of the request body.

Überprüfen des TokensValidate the token

Das Back-End MUSS das Token überprüfen, bevor es dieses akzeptiert.The back-end MUST validate the token before accepting it. Dies ist ein wichtiger Schritt, um sicherzustellen, dass das Token vom Exchange-Server des Benutzers ausgegeben wurde.This is an important step to ensure that the token was issued by the user's Exchange server. Informationen zur Überprüfung von Exchange-Benutzeridentitätstoken finden Sie unter Überprüfen eines Exchange-Identitätstokens.For information on validating Exchange user identity tokens, see Validate an Exchange identity token.

Nach Überprüfung und Decodierung sieht die Nutzlast des Tokens in etwa wie folgt aus:Once validated and decoded, the payload of the token looks something like the following.

{ 
    "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-EndMap the token to a user in your backend

Der Back-End-Dienst kann eine eindeutige Benutzer-ID aus dem Token berechnen und diese einem Benutzer in Ihrem internen Benutzersystem zuordnen.Your back-end service can calculate a unique user ID from the token and map it to a user in your internal user system. 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.For example, if you use a database to store users, you could add this unique ID to the user's record in your database.

Generieren einer eindeutigen IDGenerating a unique ID

Es wird empfohlen, dass Sie eine Kombination aus der msexchuid- und der amurl-Eigenschaft verwenden.We recommend that you use a combination of the msexchuid and amurl properties. Sie können zum Beispiel die beiden Werte verketten und eine base64-codierte Zeichenfolge generieren.For example, you could concatenate the two values together and generate a base 64-encoded string. 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.This value can be reliably generated from the token every time, so you can map an Exchange user identity token back to the user in your system.

Überprüfen des BenutzersChecking the user

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.With the unique ID generated, the next step is to check for a user in your system with that associated ID.

  • Wenn der Benutzer gefunden wird, behandelt das Back-End die Anforderung als authentifiziert, und die Anforderung kann fortgesetzt werden.If the user is found, the back-end treats the request as authenticated, and allows the request to proceed.
  • Wenn der Benutzer nicht gefunden wird, gibt das Back-End einen Fehler zurück, der angibt, dass der Benutzer sich anmelden muss.If the user is not found, then the back-end returns an error indicating that the user needs to sign in. Das Add-In fordert den Benutzer dann auf, sich beim Back-End mithilfe der vorhandenen Authentifizierungsmethode anzumelden.The add-in then prompts the user to sign in to the back-end using your existing authentication method. Nachdem der Benutzer authentifiziert wurde, wird das Exchange-Benutzeridentitätstoken mit den Benutzerauthentifizierungsdetails übermittelt.Once the user is authenticated, the Exchange user identity token is submitted with the user authentication details. Das Back-End kann dann den Datensatz des Benutzers in Ihrem System mit der eindeutigen ID aktualisieren.The back-end can then update the user's record in your system with the unique ID.