Cachelagra autentiseringstoken

Den här artikeln visar hur du cachelagrar autentiseringstoken för att förbättra programmets prestanda.

Använda ASP.NET

Importera NuGet-paketet Microsoft.IdentityModel.Clients.ActiveDirectory, som används för att hämta en token. Använd sedan följande kod för att hämta en AuthenticationResult , med hjälp av de autentiseringsvärden som du fick när du skapade Avancerad läsare resurs.

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

Objektet har en egenskap som är den faktiska token som du använder när du startar AuthenticationResult Avancerad läsare använder AccessToken SDK: n. Den har också en ExpiresOn egenskap som anger när token upphör att gälla. Innan du startar Avancerad läsare kan du kontrollera om token har upphört att gälla och endast hämta en ny token om den har upphört att gälla.

Använda Node.JS

Lägg till npm-paketet för begäran i projektet. Använd följande kod för att hämta en token med hjälp av de autentiseringsvärden som du fick när du skapade Avancerad läsare resursen.

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

Egenskapen är det datum och den tid då token upphör att gälla, uttryckt som antalet sekunder sedan den 1 januari expires_on 1970 UTC. Använd det här värdet för att avgöra om din token har upphört att gälla innan du försöker hämta en ny.

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

Nästa steg