Kimlik doğrulama belirtecini önbelleğe alma
Bu makalede, uygulamanızın performansını geliştirmek için kimlik doğrulama belirtecini önbelleğe alma işlemleri gösterilmektedir.
ASP.NET kullanma
Microsoft.Identity.Client
Belirteç almak için kullanılan NuGet paketini içeri aktarın. Ayrıntılar için bkz . Kimlik İstemcisi NuGet paketini yükleme.
Gizli bir istemci uygulaması özelliği oluşturun.
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;
}
}
Ardından, Tam Ekran Okuyucu kaynağını oluştururken elde ettiğiniz kimlik doğrulama değerlerini kullanarak bir AuthenticationResult
almak için aşağıdaki kodu kullanın.
Önemli
Microsoft.IdentityModel.Clients.ActiveDirectory NuGet paketi ve Azure AD Kimlik Doğrulama Kitaplığı (ADAL) kullanım dışı bırakıldı. 30 Haziran 2020'den bu yana yeni özellik eklenmedi. Yükseltmenizi kesinlikle öneririz. Daha fazla bilgi edinmek için geçiş kılavuzuna bakın.
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;
}
AuthenticationResult
nesnesi, SDK kullanarak Tam Ekran Okuyucu başlatırken kullandığınız gerçek belirteç olan bir AccessToken
özelliğe sahiptir. Ayrıca belirtecin süresi dolduğunda belirten bir ExpiresOn
özelliği vardır. Tam Ekran Okuyucu başlatmadan önce belirtecin süresinin dolup dolmadığını denetleyebilirsiniz ve yalnızca süresi dolduysa yeni bir belirteç alabilirsiniz.
Node.JS kullanma
projenize istek npm paketini ekleyin. Tam Ekran Okuyucu kaynağını oluştururken aldığınız kimlik doğrulama değerlerini kullanarak bir belirteç almak için aşağıdaki kodu kullanın.
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
});
}
);
});
expires_on
özelliği, belirtecin süresinin dolduğu tarih ve saattir ve 1 Ocak 1970 UTC'den bu yana saniye sayısı olarak ifade edilir. Yeni bir belirteç almaya çalışmadan önce belirtecinizin süresinin dolup dolmadığını belirlemek için bu değeri kullanın.
async function getToken() {
if (Date.now() / 1000 > CREDENTIALS.expires_on) {
CREDENTIALS = await refreshCredentials();
}
return CREDENTIALS.access_token;
}