Ukládání ověřovacího tokenu do mezipaměti
Tento článek ukazuje, jak uložit ověřovací token do mezipaměti, aby se zlepšil výkon vaší aplikace.
Použití ASP.NET
Importujte Microsoft.Identity.Client
balíček NuGet, který se používá k získání tokenu. Podrobnosti najdete v tématu Instalace balíčku NuGet klienta identity.
Vytvořte vlastnost důvěrné klientské aplikace.
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;
}
}
Dále pomocí následujícího kódu získejte AuthenticationResult
ověřovací hodnoty, které jste získali při vytváření prostředku Asistivní čtečka.
Důležité
Balíček NuGet Microsoft.IdentityModel.Clients.ActiveDirectory a Knihovna ADAL (Azure AD Authentication Library) jsou zastaralé. Od 30. června 2020 nebyly přidány žádné nové funkce. Důrazně doporučujeme upgradovat. Další informace najdete v průvodci migrací.
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;
}
Objekt AuthenticationResult
má AccessToken
vlastnost, což je skutečný token, který použijete při spuštění Asistivní čtečka pomocí sady SDK. Má také ExpiresOn
vlastnost, která označuje, kdy platnost tokenu vyprší. Před spuštěním Asistivní čtečka můžete zkontrolovat, jestli platnost tokenu vypršela, a získat nový token jenom v případě, že vypršela jeho platnost.
Použití Node.JS
Přidejte do projektu balíček npm požadavku . Pomocí následujícího kódu získejte token pomocí ověřovacích hodnot, 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 expires_on
je datum a čas vypršení platnosti tokenu vyjádřené počtem sekund od 1. ledna 1970 UTC. Pomocí této hodnoty určete, jestli platnost tokenu vypršela 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;
}