Uygulamalarınızda Sürekli Erişim Değerlendirmesi özellikli API'leri kullanma

Sürekli Erişim Değerlendirmesi (CAE), erişim belirteçlerinin yaşam süresine göre belirteç süre sonunu kullanmak yerine kritik olaylara ve ilke değerlendirmesine göre iptal edilmesini sağlayan bir Microsoft Entra özelliğidir.

Risk ve ilke gerçek zamanlı olarak değerlendirildiğinden, bazı kaynak API'lerinin belirteç ömrü 28 saate kadar artabilir. Bu uzun ömürlü belirteçler, Microsoft Kimlik Doğrulama Kitaplığı (MSAL) tarafından proaktif olarak yenilenerek uygulamalarınızın dayanıklılığını artırır.

MSAL kullanmayan uygulamalar CAE kullanmak üzere beyan sınamaları, beyan istekleri ve istemci özellikleri için destek ekleyebilir.

Uygulama ile ilgili hususlar

CAE'yi kullanmak için hem uygulamanızın hem de eriştiği kaynak API'sinin CAE etkin olması gerekir. Bir kaynak API'si CAE uygularsa ve uygulamanız CAE'yi işleyebileceğini bildirirse, uygulamanız bu kaynak için CAE belirteçleri alır. Bu nedenle, uygulamanızı CAE'ye hazır olarak bildirirseniz, uygulamanızın Microsoft Identity erişim belirteçlerini kabul eden tüm kaynak API'leri için CAE talep sınamasını işlemesi gerekir.

Ancak kodunuzu CAE özellikli kaynakları destekleyecek şekilde hazırlamak, CAE'yi desteklemeyen API'lerle çalışma becerisini sınırlamaz. Uygulamanız CAE yanıtlarını doğru şekilde işlemezse, teknik olarak geçerli olan ancak CAE nedeniyle iptal edilen bir belirteç kullanarak bir API çağrısını tekrar tekrar deneyebilir.

Uygulamanızda CAE'nin işlenmesi

CAE nedeniyle çağrıyı reddeden kaynak API'sinden gelen yanıtları işlemek için kod ekleyerek başlayın. CAE ile, erişim belirteci iptal edildiğinde veya API kullanılan IP adresinde bir değişiklik algıladığında API'ler 401 durumunu ve WWW-Authenticate üst bilgisini döndürür. Üst bilgi, WWW-Authenticate uygulamanın yeni bir erişim belirteci almak için kullanabileceği bir Talep Sınaması içerir.

Örneğin:

// Line breaks for legibility only

HTTP 401; Unauthorized

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

Uygulamanız şu durumu denetler:

  • 401 durumunu döndüren API çağrısı
  • aşağıdakileri içeren bir WWW-Authenticate üst bilginin varlığı:
    • değeriyle bir error parametre insufficient_claims
    • parametre claims

Bu koşullar karşılandığında uygulama, MSAL.NETayıklayabilir ve kodunu çözebilir.

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

Uygulamanız daha sonra talep sınamasını kullanarak kaynak için yeni bir erişim belirteci alır.

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);
    }
    // ...

Uygulamanız CAE özellikli bir kaynak tarafından döndürülen talep sınamasını işlemeye hazır olduğunda, Microsoft Identity'e uygulamanızın CAE'ye hazır olduğunu söyleyebilirsiniz. Bunu MSAL uygulamanızda yapmak için İstemci Özelliklerini "cp1"kullanarak Genel İstemcinizi oluşturun.

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

Bir kullanıcıda oturum açıp azure portalını kullanarak kullanıcının oturumunu iptal ederek uygulamanızı test edebilirsiniz. Uygulama CAE özellikli API'yi bir sonraki çağırışında kullanıcıdan yeniden kimlik doğrulaması istenir.

Kod örnekleri