Sdílet prostřednictvím


Získání kontextu autorizace

PLATÍ PRO: Všechny úrovně služby API Management

get-authorization-context Pomocí zásad získáte autorizační kontext zadaného připojení (dříve označovaného jako autorizace) ke zprostředkovateli přihlašovacích údajů, který je nakonfigurovaný v instanci služby API Management.

Zásady načítají a ukládají autorizační a obnovovací tokeny z nakonfigurovaného zprostředkovatele přihlašovacích údajů pomocí připojení.

Poznámka:

Nastavte prvky zásad a podřízené prvky v pořadí uvedeném v prohlášení o zásadách. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady služby API Management.

Prohlášení o zásadách

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

Atributy

Atribut Popis Požaduje se Výchozí
provider-id Identifikátor prostředku zprostředkovatele přihlašovacích údajů. Výrazy zásad jsou povolené. Yes
authorization-id Identifikátor prostředku připojení. Výrazy zásad jsou povolené. Yes
název kontextové proměnné Název kontextové proměnné pro příjem objektuAuthorization. Výrazy zásad jsou povolené. Yes
typ identity Typ identity pro kontrolu zásad přístupu připojení
- managed: spravovaná identita přiřazená systémem instance služby API Management.
- jwt: Nosný token JWT zadaný v atributu identity .

Výrazy zásad jsou povolené.
No managed
Identity Nosný token Microsoft Entra JWT pro kontrolu oprávnění připojení. Ignorováno pro identity-type jiné než jwt.

Očekávané deklarace identity:
-obecenstvo: https://azure-api.net/authorization-manager
- oid: ID objektu oprávnění
- tid: ID tenanta oprávnění

Výrazy zásad jsou povolené.
No
ignore-error Logický. Pokud získání kontextu autorizace způsobí chybu (například prostředek připojení nebyl nalezen nebo je ve stavu chyby):
- true: Kontextová proměnná má přiřazenou hodnotu null.
- false:vrátit 500

Pokud nastavíte hodnotu na falsehodnotu a konfigurace zásady obsahuje on-error oddíl, chyba je k dispozici ve context.LastError vlastnosti.

Výrazy zásad jsou povolené.
No false

Objekt autorizace

Kontextová proměnná autorizace přijímá objekt typu Authorization.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
Název vlastnosti Popis
AccessToken Nosný přístupový token pro autorizaci požadavku HTTP back-endu
Žádosti Deklarace identity vrácené z rozhraní API odpovědi tokenu autorizačního serveru (viz RFC6749#section-5.1).

Využití

Poznámky k využití

Příklady

Získání tokenu zpět

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

Získání tokenu zpět pomocí dynamicky nastavených atributů

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

Připojení tokenu k back-endovému volání

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

Získání tokenu z příchozího požadavku a návratového tokenu

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

Další informace o práci se zásadami najdete v tématech: