Het verificatie-token in de cache cachen

In dit artikel wordt beschreven hoe u het verificatie-token in de cache opgeslagen om de prestaties van uw toepassing te verbeteren.

Met ASP.NET

Importeer het NuGet-pakket Microsoft.IdentityModel.Clients.ActiveDirectory, dat wordt gebruikt om een token te verkrijgen. Gebruik vervolgens de volgende code om een te verkrijgen met behulp van de verificatiewaarden die u hebt verkregen bij het maken van AuthenticationResult Insluitende lezer resource.

private async Task<AuthenticationResult> GetTokenAsync()
{
    AuthenticationContext authContext = new AuthenticationContext($"https://login.windows.net/{TENANT_ID}");
    ClientCredential clientCredential = new ClientCredential(CLIENT_ID, CLIENT_SECRET);
    AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://cognitiveservices.azure.com/", clientCredential);
    return authResult;
}

Het object heeft een eigenschap die het werkelijke token is dat u gebruikt bij het starten van de AuthenticationResult AccessToken Insluitende lezer de SDK. Het bevat ook een ExpiresOn eigenschap die aan geeft wanneer het token verloopt. Voordat u de Insluitende lezer start, kunt u controleren of het token is verlopen en alleen een nieuw token verkrijgen als het is verlopen.

Met Node.JS

Voeg het aanvraagpakket npm toe aan uw project. Gebruik de volgende code om een token te verkrijgen met behulp van de verificatiewaarden die u hebt verkregen bij het maken van de Insluitende lezer resource.

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
            });
        }
    );
});

De eigenschap is de datum en tijd waarop het token verloopt, uitgedrukt als het aantal seconden expires_on sinds 1 januari 1970 UTC. Gebruik deze waarde om te bepalen of uw token is verlopen voordat u een nieuw token probeert te verkrijgen.

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

Volgende stappen