Bagikan melalui


Cara menggunakan API yang diaktifkan Evaluasi Akses Berkelanjutan di aplikasi Anda

Evaluasi Akses Berkelanjutan (CAE) adalah fitur Microsoft Entra yang memungkinkan token akses dicabut berdasarkan peristiwa penting dan evaluasi kebijakan daripada mengandalkan kedaluwarsa token berdasarkan masa pakai. Untuk beberapa API sumber daya, karena risiko dan kebijakan dievaluasi secara real time, ini dapat meningkatkan masa pakai token hingga 28 jam. Token berumur panjang ini secara proaktif disegarkan oleh Microsoft Authentication Library (MSAL), meningkatkan ketahanan aplikasi Anda.

Artikel ini memperlihatkan cara menggunakan API yang diaktifkan CAE di aplikasi Anda. Aplikasi yang tidak menggunakan MSAL dapat menambahkan dukungan untuk tantangan klaim, permintaan klaim, dan kemampuan klien untuk menggunakan CAE.

Pertimbangan implementasi

Untuk menggunakan CAE, aplikasi Anda dan API sumber daya yang diaksesnya harus diaktifkan CAE. Namun, menyiapkan kode Anda untuk menggunakan sumber daya yang diaktifkan CAE tidak akan mencegah Anda menggunakan API yang tidak diaktifkan CAE.

Jika API sumber daya mengimplementasikan CAE dan aplikasi Anda menyatakan dapat menangani CAE, aplikasi Anda menerima token CAE untuk sumber daya tersebut. Untuk alasan ini, jika Anda menyatakan aplikasi Anda siap untuk CAE, aplikasi Anda harus menangani tantangan klaim CAE untuk semua API sumber daya yang menerima token akses Identitas Microsoft. Jika Anda tidak menangani respons CAE dalam panggilan API ini, aplikasi Anda dapat berakhir dalam perulangan mencoba kembali panggilan API dengan token yang masih dalam masa pakai token yang dikembalikan tetapi telah dicabut karena CAE.

Kode

Langkah pertama adalah menambahkan kode untuk menangani respons dari API sumber daya yang menolak panggilan karena CAE. Dengan CAE, API akan mengembalikan status 401 dan header WWW-Authenticate saat token akses dicabut atau API mendeteksi perubahan alamat IP yang digunakan. Header WWW-Authenticate berisi Tantangan Klaim yang dapat digunakan aplikasi untuk memperoleh token akses baru.

Contohnya:

// Line breaks for legibility only

HTTP 401; Unauthorized

Bearer authorization_uri="https://login.windows.net/common/oauth2/authorize",
  error="insufficient_claims",
  claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwNDEwNjY1MSJ9fX0="

Aplikasi Anda akan memeriksa:

  • panggilan API yang mengembalikan status 401
  • keberadaan header WWW-Authenticate yang berisi:
    • parameter "kesalahan" dengan nilai "insufficient_claims"
    • parameter "klaim"

Jika kondisi ini terpenuhi, aplikasi dapat mengekstrak dan mendekode verifikasi klaim menggunakan kelas WwwAuthenticateParameters MSAL.NET.

if (APIresponse.IsSuccessStatusCode)
{
    // ...
}
else
{
    if (APIresponse.StatusCode == System.Net.HttpStatusCode.Unauthorized
        && APIresponse.Headers.WwwAuthenticate.Any())
    {
        string claimChallenge = WwwAuthenticateParameters.GetClaimChallengeFromResponseHeaders(APIresponse.Headers);

Aplikasi Anda selanjutnya akan menggunakan tantangan klaim untuk memperoleh token akses baru untuk sumber daya.

try
{
    authResult = await _clientApp.AcquireTokenSilent(scopes, firstAccount)
        .WithClaims(claimChallenge)
        .ExecuteAsync()
        .ConfigureAwait(false);
}
catch (MsalUiRequiredException)
{
    try
    {
        authResult = await _clientApp.AcquireTokenInteractive(scopes)
            .WithClaims(claimChallenge)
            .WithAccount(firstAccount)
            .ExecuteAsync()
            .ConfigureAwait(false);
    }
    // ...

Setelah aplikasi Anda siap untuk menangani tantangan klaim yang dikembalikan oleh sumber daya yang diaktifkan CAE, Anda dapat memberi tahu Identitas Microsoft bahwa aplikasi Anda siap untuk CAE. Untuk melakukan ini di aplikasi MSAL Anda, bangun Klien Publik Anda menggunakan Kemampuan Klien "cp1".

_clientApp = PublicClientApplicationBuilder.Create(App.ClientId)
    .WithDefaultRedirectUri()
    .WithAuthority(authority)
    .WithClientCapabilities(new [] {"cp1"})
    .Build();

Anda dapat menguji aplikasi Anda dengan memasukkan pengguna ke aplikasi, lalu menggunakan portal Microsoft Azure untuk Mencabut sesi pengguna. Saat aplikasi memanggil API yang diaktifkan CAE di lain waktu, pengguna akan diminta untuk mengotorisasi ulang.

Anda dapat menguji aplikasi Anda dengan memasukkan pengguna ke aplikasi, lalu menggunakan portal Azure untuk mencabut sesi pengguna. Saat aplikasi memanggil API yang diaktifkan CAE di lain waktu, pengguna akan diminta untuk mengotorisasi ulang.

Sampel kode

Langkah berikutnya