Cara menyimpan cache token autentikasi
Artikel ini menunjukkan cara menyimpan token autentikasi untuk meningkatkan performa aplikasi Anda.
Menggunakan ASP.NET
Microsoft.Identity.Client
Impor paket NuGet, yang digunakan untuk memperoleh token. Untuk detailnya, lihat Menginstal paket NuGet Klien Identitas.
Buat properti aplikasi klien rahasia.
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;
}
}
Selanjutnya, gunakan kode berikut untuk memperoleh AuthenticationResult
, menggunakan nilai autentikasi yang Anda dapatkan saat membuat sumber daya Immersive Reader.
Penting
Paket Microsoft.IdentityModel.Clients.ActiveDirectory NuGet dan Azure AD pustaka otentikasi (ADAL) telah ditolak. Tidak ada fitur baru yang ditambahkan sejak 30 Juni 2020. Kami sangat mendorong Anda untuk melakukan peningkatan. Untuk mempelajari selengkapnya, lihat panduan migrasi.
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;
}
Objek AuthenticationResult
memiliki AccessToken
properti, yang merupakan token aktual yang Anda gunakan saat meluncurkan Pembaca Imersif menggunakan SDK. Ini juga memiliki ExpiresOn
properti yang menunjukkan kapan token kedaluwarsa. Sebelum meluncurkan Pembaca Imersif, Anda dapat memeriksa apakah token kedaluwarsa, dan memperoleh token baru hanya jika kedaluwarsa.
Menggunakan Node.js
Tambahkan paket npm permintaan ke proyek Anda. Gunakan kode berikut untuk memperoleh token, menggunakan nilai autentikasi yang Anda dapatkan saat membuat sumber daya Immersive Reader.
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
});
}
);
});
Properti expires_on
adalah tanggal dan waktu saat token kedaluwarsa, yang dinyatakan sebagai jumlah detik sejak 1 Januari 1970 UTC. Gunakan nilai ini untuk menentukan apakah token Anda kedaluwarsa sebelum mencoba memperoleh yang baru.
async function getToken() {
if (Date.now() / 1000 > CREDENTIALS.expires_on) {
CREDENTIALS = await refreshCredentials();
}
return CREDENTIALS.access_token;
}