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;
}

Langkah selanjutnya