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.

Karena risiko dan kebijakan dievaluasi secara real time, beberapa masa pakai token API sumber daya dapat meningkat hingga 28 jam. Token berumur panjang ini secara proaktif disegarkan oleh Microsoft Authentication Library (MSAL), meningkatkan ketahanan 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. 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 CAE, aplikasi Anda harus menangani tantangan klaim CAE untuk semua API sumber daya yang menerima token akses Microsoft Identity.

Namun, menyiapkan kode Anda untuk mendukung sumber daya yang didukung CAE tidak membatasi kemampuannya untuk bekerja dengan API yang tidak mendukung CAE. Jika aplikasi Anda tidak menangani respons CAE dengan benar, aplikasi mungkin berulang kali mencoba kembali panggilan API menggunakan token yang secara teknis valid tetapi dicabut karena CAE.

Menangani CAE di aplikasi Anda

Mulailah dengan menambahkan kode untuk menangani respons dari API sumber daya yang menolak panggilan karena CAE. Dengan CAE, API mengembalikan status 401 dan WWW-Authenticate header 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 memeriksa:

  • panggilan API yang mengembalikan status 401
  • keberadaan header yang WWW-Authenticate berisi:
    • error parameter dengan nilaiinsufficient_claims
    • claims parameter

Ketika kondisi ini terpenuhi, aplikasi dapat mengekstrak dan mendekode tantangan klaim menggunakan kelas MSAL.NETWwwAuthenticateParameters.

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

Aplikasi Anda kemudian 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 berkemampuan CAE, Anda dapat memberi tahu Microsoft Identity 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 Azure untuk mencabut sesi pengguna. Saat aplikasi memanggil API yang diaktifkan CAE di lain waktu, pengguna akan diminta untuk mengotorisasi ulang.

Sampel kode