Yetkilendirme bağlamı alma

UYGULANANLAR: Tüm API Management katmanları

API Management örneğinde get-authorization-context yapılandırılmış bir kimlik bilgisi sağlayıcısına belirtilen bağlantının (eski adı yetkilendirme) yetkilendirme bağlamını almak için ilkeyi kullanın.

İlke, bağlantıyı kullanarak yapılandırılan kimlik bilgisi sağlayıcısından yetkilendirme ve yenileme belirteçlerini getirir ve depolar.

Not

İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<get-authorization-context
    provider-id="credential provider id" 
    authorization-id="connection id" 
    context-variable-name="variable name" 
    identity-type="managed | jwt"
    identity="JWT bearer token"
    ignore-error="true | false" />

Özellikler

Öznitelik Açıklama Zorunlu Varsayılan
sağlayıcı kimliği Kimlik bilgisi sağlayıcısı kaynak tanımlayıcısı. İlke ifadelerine izin verilir. Yes Yok
authorization-id Bağlantı kaynağı tanımlayıcısı. İlke ifadelerine izin verilir. Yes Yok
context-variable-name Nesneyi alacak bağlam değişkeninin Authorization adı. İlke ifadelerine izin verilir. Yes Yok
kimlik türü Bağlantının erişim ilkesine karşı denetlenecek kimlik türü.
- managed: API Management örneğinin sistem tarafından atanan yönetilen kimliği.
- jwt: Özniteliğinde identity belirtilen JWT taşıyıcı belirteci.

İlke ifadelerine izin verilir.
Hayır managed
identity Bağlantı izinlerini denetlemek için bir Microsoft Entra JWT taşıyıcı belirteci. dışında jwtiçin identity-type yoksayıldı.

Beklenen talepler:
-Seyirci: https://azure-api.net/authorization-manager
- oid: İzin nesnesi kimliği
- tid: İzin kiracı kimliği

İlke ifadelerine izin verilir.
Hayır YOK
ignore-error Boole. Yetkilendirme bağlamını almak bir hatayla sonuçlanırsa (örneğin, bağlantı kaynağı bulunamadıysa veya hata durumundaysa):
- true: bağlam değişkenine null değeri atanır.
- false:Dönüş 500

değerini olarak falseayarlarsanız ve ilke yapılandırması bir on-error bölüm içeriyorsa, hata özelliğinde context.LastError kullanılabilir.

İlke ifadelerine izin verilir.
Hayır false

Yetkilendirme nesnesi

Yetkilendirme bağlam değişkeni türünde Authorizationbir nesnesi alır.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
Özellik Adı Açıklama
AccessToken Arka uç HTTP isteğini yetkilendirmek için taşıyıcı erişim belirteci.
Talepler Yetkilendirme sunucusunun belirteç yanıt API'sinden döndürülen talepler (bkz . RFC6749#section-5.1).

Kullanım

Kullanım notları

  • Bağlantı için erişim ilkesininbir hizmet sorumlusuna atandığı zaman yapılandırınidentity-type=jwt. JWT için yalnızca /.default uygulama kapsamları desteklenir.

Örnekler

Belirteci geri alma

<!-- Add to inbound policy. -->
<get-authorization-context 
    provider-id="github-01" 
    authorization-id="auth-01" 
    context-variable-name="auth-context" 
    identity-type="managed" 
    ignore-error="false" />
<!-- Return the token -->
<return-response>
    <set-status code="200" />
    <set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>

Dinamik olarak ayarlanmış özniteliklerle belirteci geri alma

<!-- Add to inbound policy. -->
<get-authorization-context 
  provider-id="@(context.Request.Url.Query.GetValueOrDefault("authorizationProviderId"))" 
  authorization-id="@(context.Request.Url.Query.GetValueOrDefault("authorizationId"))" context-variable-name="auth-context" 
  ignore-error="false" 
  identity-type="managed" />
<!-- Return the token -->
<return-response>
    <set-status code="200" />
    <set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>

Belirteci arka uç çağrısına ekleme

<!-- Add to inbound policy. -->
<get-authorization-context
    provider-id="github-01" 
    authorization-id="auth-01" 
    context-variable-name="auth-context" 
    identity-type="managed" 
    ignore-error="false" />
<!-- Attach the token to the backend call -->
<set-header name="Authorization" exists-action="override">
    <value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value>
</set-header>

Gelen istekten belirteç alma ve belirteç döndürme

<!-- Add to inbound policy. -->
<get-authorization-context 
    provider-id="github-01" 
    authorization-id="auth-01" 
    context-variable-name="auth-context" 
    identity-type="jwt" 
    identity="@(context.Request.Headers["Authorization"][0].Replace("Bearer ", ""))"
    ignore-error="false" />
<!-- Return the token -->
<return-response>
    <set-status code="200" />
    <set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>

İlkelerle çalışma hakkında daha fazla bilgi için bkz: