Udostępnij za pośrednictwem


Uzyskiwanie kontekstu autoryzacji

DOTYCZY: Wszystkie warstwy usługi API Management

get-authorization-context Użyj zasad, aby uzyskać kontekst autoryzacji określonego połączenia (wcześniej nazywanego autoryzacją) dostawcy poświadczeń skonfigurowanego w wystąpieniu usługi API Management.

Zasady pobierają i przechowują tokeny autoryzacji i odświeżania ze skonfigurowanego dostawcy poświadczeń przy użyciu połączenia.

Uwaga

Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.

Instrukcja zasad

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

Atrybuty

Atrybut opis Wymagani Wartość domyślna
provider-id Identyfikator zasobu dostawcy poświadczeń. Wyrażenia zasad są dozwolone. Tak Nie dotyczy
identyfikator autoryzacji Identyfikator zasobu połączenia. Wyrażenia zasad są dozwolone. Tak Nie dotyczy
nazwa-zmiennej kontekstu Nazwa zmiennej kontekstowej do odbierania Authorization obiektu. Wyrażenia zasad są dozwolone. Tak Nie dotyczy
identity-type Typ tożsamości, która ma być sprawdzana względem zasad dostępu połączenia.
- managed: przypisana przez system tożsamość zarządzana wystąpienia usługi API Management.
- jwt: token elementu nośnego JWT określony w atrybucie identity .

Wyrażenia zasad są dozwolone.
Nie. managed
tożsamości Token elementu nośnego Entra JWT firmy Microsoft w celu sprawdzenia uprawnień połączenia. Ignorowane dla identity-type elementu innego niż jwt.

Oczekiwane oświadczenia:
-audiencja: https://azure-api.net/authorization-manager
- oid: identyfikator obiektu uprawnień
- tid: Identyfikator dzierżawy uprawnień

Wyrażenia zasad są dozwolone.
Nie. Nie dotyczy
ignoruj błąd Wartość logiczna. Jeśli uzyskanie kontekstu autoryzacji powoduje błąd (na przykład zasób połączenia nie zostanie znaleziony lub jest w stanie błędu):
- true: zmienna kontekstowa ma przypisaną wartość null.
- false:wrócić 500

Jeśli ustawisz wartość na false, a konfiguracja zasad zawiera sekcję on-error , błąd jest dostępny we context.LastError właściwości .

Wyrażenia zasad są dozwolone.
Nie. false

Obiekt autoryzacji

Zmienna kontekstowa Autoryzacja odbiera obiekt typu Authorization.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
Nazwa właściwości Opis
AccessToken Token dostępu elementu nośnego w celu autoryzowania żądania HTTP zaplecza.
Roszczenia Oświadczenia zwrócone z interfejsu API odpowiedzi tokenu serwera autoryzacji (zobacz RFC6749#section-5.1).

Użycie

Uwagi dotyczące użycia

  • Skonfiguruj identity-type=jwt , kiedy zasady dostępu dla połączenia są przypisane do jednostki usługi. Tylko /.default zakresy tylko aplikacji są obsługiwane dla zestawu JWT.

Przykłady

Uzyskiwanie tokenu z powrotem

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

Uzyskiwanie tokenu z dynamicznym zestawem atrybutów

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

Dołączanie tokenu do wywołania zaplecza

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

Uzyskiwanie tokenu z żądania przychodzącego i tokenu zwrotnego

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

Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz: