الحصول على سياق التخويل

ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات

استخدم النهج get-authorization-context للحصول على سياق التخويل لاتصال محدد (يسمى سابقا تخويل) إلى موفر بيانات اعتماد تم تكوينه في مثيل APIM.

يجلب النهج ويخزن الرموز المميزة للتخويل والتحديث من موفر بيانات الاعتماد المكون باستخدام الاتصال.

إشعار

تعيين عناصر النهج والعناصر التابعة بالترتيب الوارد في بيان النهج. تعلم كيفية إعداد نُهج APIM أو تعديلها.

نهج السياسة

<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" />

سمات

السمة ‏‏الوصف مطلوبة افتراضي
مزود معرف معرف مورد موفر بيانات الاعتماد. يتم السماح بتعبيرات النهج. ‏‏نعم‬ غير متوفر
معرّف التخويل معرف مورد الاتصال. يتم السماح بتعبيرات النهج. ‏‏نعم‬ غير متوفر
اسم متغير السياق اسم متغير السياق لاستقبال Authorization العنصر. يتم السماح بتعبيرات النهج. ‏‏نعم‬ غير متوفر
نوع الهوية نوع الهوية التي يجب التحقق منها مقابل نهج الوصول للاتصال.
- managed: الهوية المدارة المعينة من قبل النظام لمثيل APIM.
- jwt: الرمز المميز لحامل JWT المحدد في السمة identity.

يتم السماح بتعبيرات النهج.
لا managed
الهوية رمز مميز لحامل Microsoft Entra JWT للتحقق مقابل أذونات الاتصال. تم تجاهله لـ identity-type بخلاف jwt.

المطالبات المتوقعة:
- الجمهور: https://azure-api.net/authorization-manager
- oid: معرف عنصر الإذن
- tid: معرف مستأجر الإذن

يتم السماح بتعبيرات النهج.
لا ‏‫غير متاح
تجاهل الخطأ منطقي. إذا كان الحصول على سياق التخويل يؤدي إلى حدوث خطأ (على سبيل المثال، لم يتم العثور على مورد الاتصال أو في حالة خطأ):
- true: يتم تعيين قيمة خالية إلى متغير السياق.
- false: الرجوع 500

إذا قمت بتعيين القيمة إلى false، وكان تكوين النهج يتضمن قسما on-error ، يتوفر الخطأ في الخاصية context.LastError .

يتم السماح بتعبيرات النهج.
لا false

عنصر التخويل

يتلقى متغير سياق التخويل عنصراً من النوع Authorization.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
اسم الخاصية ‏‏الوصف
AccessToken رمز وصول الحامل لتفويض طلب HTTP الخلفي.
المطالبات المطالبات التي تم إرجاعها من واجهة برمجة تطبيقات استجابة الرمز المميز لخادم التخويل (راجع RFC6749#section-5.1).

الاستخدام

ملاحظات الاستخدام

  • تكوين identity-type=jwt عند تعيين نهج الوصول للاتصال إلى كيان الخدمة. /.default يتم دعم نطاقات التطبيق فقط ل JWT.

الأمثلة

الحصول على الرمز المميز مرة أخرى

<!-- 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>

الحصول على الرمز المميز مرة أخرى مع تعيين السمات ديناميكيا

<!-- 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>

إرفاق الرمز المميز باستدعاء الخلفية

<!-- 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>

الحصول على الرمز المميز من الطلب الوارد والرمز المميز للرجوع

<!-- 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>

لمزيد من المعلومات حول العمل مع النُهج، راجع: