Jak ověřovací token ukládat do mezipaměti

Tento článek ukazuje, jak ověřovací token ukládat do mezipaměti, aby se zlepšil výkon vaší aplikace.

Pomocí ASP.NET

Importujte balíček Microsoft.IdentityModel.Clients.ActiveDirectory NuGet, který se používá k získání tokenu. Dále pomocí následujícího kódu získejte pomocí hodnot ověřování, které jste získali při vytváření AuthenticationResult prostředku Asistivní čtečka .

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

Objekt AuthenticationResult má vlastnost , což je skutečný token, který použijete při spouštění Asistivní čtečka AccessToken pomocí sady SDK. Má také ExpiresOn vlastnost, která označuje, kdy vyprší platnost tokenu. Před spuštěním Asistivní čtečka můžete zkontrolovat, jestli platnost tokenu vypršela, a získat nový token pouze v případě, že jeho platnost vypršela.

Pomocí Node.JS

Přidejte do projektu balíček npm požadavku. Pomocí následujícího kódu získáte token s použitím hodnot ověřování, které jste získali při vytváření prostředku Asistivní čtečka .

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

Vlastnost je datum a čas, kdy vyprší platnost tokenu, vyjádřený jako počet sekund od expires_on 1. ledna 1970 UTC. Tuto hodnotu použijte k určení, jestli vypršela platnost vašeho tokenu před pokusem o získání nového tokenu.

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

Další kroky