Cachelagrade autentiseringstoken

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

Använda ASP.NET

Microsoft.Identity.Client Importera NuGet-paketet som används för att hämta en token. Mer information finns i Installera Identity Client NuGet-paketet.

Skapa en konfidentiell klientprogramegenskap.

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

Använd sedan följande kod för att hämta en AuthenticationResult, med de autentiseringsvärden som du fick när du skapade Avancerad läsare resursen.

Viktigt!

NuGet-paketet Microsoft.IdentityModel.Clients.ActiveDirectory och Azure AD Authentication Library (ADAL) har blivit inaktuella. Inga nya funktioner har lagts till sedan den 30 juni 2020. Vi rekommenderar starkt att du uppgraderar. Mer information finns i migreringsguiden.

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

Objektet AuthenticationResult har en AccessToken egenskap som är den faktiska token som du använder när du startar Avancerad läsare med hjälp av SDK: et. 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 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 expires_on är det datum och den tid då token upphör att gälla, uttryckt som antalet sekunder sedan den 1 januari 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;
}

Gå vidare