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é. Ano –
authorization-id Identifikátor prostředku připojení. Výrazy zásad jsou povolené. Ano –
název kontextové proměnné Název kontextové proměnné pro příjem objektuAuthorization. Výrazy zásad jsou povolené. Ano –
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é.
Ne managed
identita 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é.
Ne –
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é.
Ne false

Důležité

Propojený přístup se nekontroluje, když je poskytovatel přihlašovacích údajů nebo spojení odkazováno pomocí provider-id nebo authorization-id. Uživatel, který má oprávnění psát politiku, může odkazovat na jakéhokoli dostupného poskytovatele přihlašovacích údajů nebo připojení, i když nemá přístup ke čtení těchto zdrojů. Pokud identita zvolená politikou splňuje přístupovou politiku spojení, uživatel může způsobit, že správa API získá přístupový token a nároky nosiče spojení, které může politika přeposlat na backend nebo zpřístupnit v odpovědi. Odkazování na zdroje neobchází přístupovou politiku připojení ani neumožňuje zobrazit jejich konfiguraci nebo získat obnovovací tokeny.

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
Přístupový token 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: