Vorgehensweise: Zwischenspeichern des Authentifizierungstokens

In diesem Artikel wird veranschaulicht, wie das Authentifizierungstoken zwischengespeichert wird, um die Leistung Ihrer Anwendung zu verbessern.

Verwenden von ASP.NET

Importieren Sie das NuGet-Paket Microsoft.Identity.Client, das zum Beziehen eines Tokens verwendet wird. Ausführliche Informationen finden Sie unter Installieren des NuGet-Pakets „Identity Client“.

Erstellen Sie eine vertrauliche Clientanwendungseigenschaft.

private IConfidentialClientApplication _confidentialClientApplication;
private IConfidentialClientApplication ConfidentialClientApplication
{
    get {
        if (_confidentialClientApplication == null) {
            _confidentialClientApplication = ConfidentialClientApplicationBuilder.Create(ClientId)
            .WithClientSecret(ClientSecret)
            .WithAuthority($"https://login.windows.net/{TenantId}")
            .Build();
        }

        return _confidentialClientApplication;
    }
}

Verwenden Sie als nächstes den folgenden Code, um mithilfe der Authentifizierungswerte, die Sie beim Erstellen der Plastischer Reader-Ressource erhalten haben, ein AuthenticationResult abzurufen.

Wichtig

Das Microsoft.IdentityModel.Clients.ActiveDirectory NuGet Paket und Azure AD-Authentifizierungsbibliothek (ADAL) sind veraltet. Seit dem 30. Juni 2020 wurden keine neuen Features mehr hinzugefügt. Wir raten Ihnen dringend zu einem Upgrade. Weitere Informationen finden Sie im Migrationsleitfaden.

public async Task<string> GetTokenAsync()
{
    const string resource = "https://cognitiveservices.azure.com/";

    var authResult = await ConfidentialClientApplication.AcquireTokenForClient(
        new[] { $"{resource}/.default" })
        .ExecuteAsync()
        .ConfigureAwait(false);

    return authResult.AccessToken;
}

Das AuthenticationResult-Objekt verfügt über eine AccessToken-Eigenschaft, bei der es sich um das tatsächliche Token handelt, das Sie beim Starten von Immersive Reader mit dem SDK verwenden. Außerdem verfügt es über eine ExpiresOn-Eigenschaft, die angibt, wann das Token abläuft. Vor dem Starten von Immersive Reader können Sie überprüfen, ob das Token abgelaufen ist, um ein neues Token nur dann abzurufen, wenn es abgelaufen ist.

Verwenden von Node.JS

Fügen Sie Ihrem Projekt das npm-Paket request hinzu. Verwenden Sie den folgenden Code, um mithilfe der Authentifizierungswerte, die Sie beim Erstellen der Plastischer Reader-Ressource erhalten haben, ein Token abzurufen.

router.get('/token', function(req, res) {
    request.post(
        {
            headers: { 'content-type': 'application/x-www-form-urlencoded' },
            url: `https://login.windows.net/${TENANT_ID}/oauth2/token`,
            form: {
                grant_type: 'client_credentials',
                client_id: CLIENT_ID,
                client_secret: CLIENT_SECRET,
                resource: 'https://cognitiveservices.azure.com/'
            }
        },
        function(err, resp, json) {
            const result = JSON.parse(json);
            return res.send({
                access_token: result.access_token,
                expires_on: result.expires_on
            });
        }
    );
});

Die expires_on-Eigenschaft ist der Zeitpunkt in Datum und Uhrzeit, zu dem das Token abläuft, ausgedrückt als die Anzahl der Sekunden, die seit dem 1. Januar 1970 UTC verstrichen sind. Verwenden Sie diesen Wert, um zu bestimmen, ob das Token abgelaufen ist, bevor Sie versuchen, ein neues Token abzurufen.

async function getToken() {
    if (Date.now() / 1000 > CREDENTIALS.expires_on) {
        CREDENTIALS = await refreshCredentials();
    }
    return CREDENTIALS.access_token;
}

Nächster Schritt