Comment mettre en cache le jeton d’authentification
Cet article explique comment mettre en cache le jeton d’authentification afin d’améliorer les performances de votre application.
Utilisation d’ASP.NET
Importez le package NuGet Microsoft.Identity.Client
qui est utilisé pour acquérir un jeton. Pour plus d’informations, consultez Installer le package NuGet de client d’identité.
Créez une propriété d’application cliente confidentielle.
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;
}
}
Ensuite, utilisez le code suivant pour acquérir un AuthenticationResult
en utilisant les valeurs d’authentification que vous avez obtenues quand vous avez créé la ressource Lecteur immersif.
Important
Le package NuGet Microsoft.IdentityModel.Clients.ActiveDirectory et la bibliothèque d’authentification Azure AD (ADAL) sont déconseillés. Aucune nouvelle fonctionnalité n’a été ajoutée depuis le 30 juin 2020. Nous vous encourageons vivement à effectuer la mise à niveau. Si vous souhaitez obtenir plus d’informations, consultez le guide de migration.
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;
}
L’objet AuthenticationResult
a une propriété AccessToken
qui est le jeton que vous utilisez lors du lancement d’Immersive Reader en utilisant le Kit de développement logiciel (SDK). Il a également une propriété ExpiresOn
qui indique la date d’expiration du jeton. Avant de lancer le service Immersive Reader, vous pouvez vérifier si le jeton a expiré et en acquérir un nouveau uniquement s’il a effectivement expiré.
Utilisation de Node.JS
Ajoutez le package npm request à votre projet. Utilisez le code suivant pour acquérir un jeton en utilisant les valeurs d’authentification que vous avez obtenues quand vous avez créé la ressource Lecteur immersif.
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
});
}
);
});
La propriété expires_on
correspond à la date et à l’heure d’expiration du jeton, exprimées en nombre de secondes depuis le 1er janvier 1970 UTC. Utilisez cette valeur pour déterminer si votre jeton a expiré avant d’essayer d’en acquérir un nouveau.
async function getToken() {
if (Date.now() / 1000 > CREDENTIALS.expires_on) {
CREDENTIALS = await refreshCredentials();
}
return CREDENTIALS.access_token;
}