Como colocar o token de autenticação em cache
Este artigo demonstra como colocar em cache o token de autenticação para melhorar o desempenho da sua aplicação.
Utilizar ASP.NET
Importe o pacote NuGet Microsoft.Identity.Client , que é utilizado para adquirir um token.
Crie uma propriedade de aplicação cliente confidencial.
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;
}
}
Em seguida, utilize o seguinte código para adquirir um AuthenticationResult
, com os valores de autenticação que obteve quando criou o recurso Leitura Avançada.
Importante
O pacote NuGet Microsoft.IdentityModel.Clients.ActiveDirectory e Azure AD Authentication Library (ADAL) foram preteridos. Não foram adicionadas novas funcionalidades desde 30 de junho de 2020. Recomendamos vivamente que atualize, veja o guia de migração para obter mais detalhes.
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;
}
O AuthenticationResult
objeto tem uma AccessToken
propriedade que é o token real que irá utilizar ao iniciar o Leitura Avançada com o SDK. Também tem uma ExpiresOn
propriedade que indica quando o token irá expirar. Antes de iniciar a Leitura Avançada, pode verificar se o token expirou e adquirir um novo token apenas se tiver expirado.
Utilizar Node.JS
Adicione o pacote npm do pedido ao projeto. Utilize o seguinte código para adquirir um token, utilizando os valores de autenticação que obteve quando criou o recurso Leitura Avançada.
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
});
}
);
});
A expires_on
propriedade é a data e hora em que o token expira, expresso como o número de segundos desde 1 de janeiro de 1970 UTC. Utilize este valor para determinar se o token expirou antes de tentar adquirir um novo.
async function getToken() {
if (Date.now() / 1000 > CREDENTIALS.expires_on) {
CREDENTIALS = await refreshCredentials();
}
return CREDENTIALS.access_token;
}
Passos seguintes
- Explorar a Referência do SDK do Leitura Avançada