A hitelesítési jogkivonat gyorsítótárazása
Ez a cikk bemutatja, hogyan gyorsítótárazhatja a hitelesítési jogkivonatot az alkalmazás teljesítményének javítása érdekében.
A ASP.NET használata
Importálja a Microsoft.Identity.Client
NuGet-csomagot, amely egy jogkivonat beszerzésére szolgál. További részletekért lásd : Identity Client NuGet-csomag telepítése.
Hozzon létre egy bizalmas ügyfélalkalmazás-tulajdonságot.
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;
}
}
Ezután a következő kóddal szerezze be AuthenticationResult
a Modern olvasó erőforrás létrehozásakor kapott hitelesítési értékeket.
Fontos
A Microsoft.IdentityModel.Clients.ActiveDirectory NuGet csomag és Azure AD hitelesítési kódtár (ADAL) elavult. 2020. június 30. óta nem adtunk hozzá új funkciókat. Határozottan javasoljuk, hogy frissítsen. További információért tekintse meg a migrálási útmutatót.
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;
}
Az AuthenticationResult
objektum rendelkezik egy AccessToken
tulajdonságmal, amely az SDK-val történő Modern olvasó indításakor használt tényleges jogkivonat. Emellett van egy ExpiresOn
tulajdonsága is, amely azt jelzi, hogy a jogkivonat mikor jár le. A Modern olvasó elindítása előtt ellenőrizheti, hogy a jogkivonat lejárt-e, és csak akkor szerezhet be új jogkivonatot, ha lejárt.
A Node.JS használata
Adja hozzá a kérelem npm-csomagját a projekthez. A következő kóddal szerezze be a jogkivonatot a Modern olvasó erőforrás létrehozásakor kapott hitelesítési értékekkel.
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
tulajdonság az a dátum és időpont, amikor a jogkivonat lejár, az 1970. január 1., UTC óta eltelt másodpercek számával kifejezve. Ezzel az értékkel megállapíthatja, hogy a jogkivonat lejárt-e, mielőtt újat próbál meg beszerezni.
async function getToken() {
if (Date.now() / 1000 > CREDENTIALS.expires_on) {
CREDENTIALS = await refreshCredentials();
}
return CREDENTIALS.access_token;
}