Autorisierungskontext abrufen

GILT FÜR: Alle API Management-Ebenen

Verwenden Sie die Richtlinie get-authorization-context, um den Autorisierungskontext einer angegebenen Verbindung (zuvor als Autorisierung bezeichnet) mit einem Anmeldeinformationsanbieter abzurufen, die in der API Management-Instanz konfiguriert ist.

Die Richtlinie ruft über die Verbindung Autorisierungs- und Aktualisierungstoken vom konfigurierten Anmeldeinformationsanbieter ab.

Hinweis

Legen Sie die Elemente und untergeordneten Elemente einer Richtlinie in der Reihenfolge fest, die in der Richtlinienanweisung angegeben ist. Erfahren Sie mehr darüber, wie Sie API Management-Richtlinien festlegen oder bearbeiten.

Richtlinienanweisung

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

Attribute

Attribut BESCHREIBUNG Erforderlich Standard
provider-id Der Ressourcenbezeichner des Anmeldeinformationsanbieters. Richtlinienausdrücke sind zulässig. Ja
authorization-id Der Ressourcenbezeichner der Verbindung. Richtlinienausdrücke sind zulässig. Ja
context-variable-name Der Name der Kontextvariablen, um das Authorization-Objekt zu empfangen. Richtlinienausdrücke sind zulässig. Ja
identity-type Typ der Identität, der über die Zugriffsrichtlinie der Verbindung überprüft werden soll.
- managed: vom System zugewiesene verwaltete Identität für die API Management-Instanz.
- jwt: JWT-Bearertoken, das im identity-Attribut angegeben ist.

Richtlinienausdrücke sind zulässig.
Nein managed
identity Ein Microsoft Entra-JWT-Bearertoken, das über die Verbindungsberechtigungen überprüft werden soll. Ignoriert für anderen identity-type als jwt.

Erwartete Ansprüche:
- audience (Zielgruppe): https://azure-api.net/authorization-manager
- oid: Berechtigungsobjekt-ID
- tid: Berechtigungsmandanten-ID

Richtlinienausdrücke sind zulässig.
Nein
ignore-error Boolesch. Wenn das Abrufen des Autorisierungskontexts zu einem Fehler führt (z. B. kann die Verbindungsressource nicht gefunden werden, oder sie befindet sich in einem Fehlerzustand):
- true: Der Kontextvariablen wird ein Wert von Null zugewiesen.
- false: 500 zurückgeben.

Wenn Sie den Wert auf false festlegen und die Richtlinienkonfiguration den Abschnitt on-error enthält, ist der Fehler in der Eigenschaft context.LastError verfügbar.

Richtlinienausdrücke sind zulässig.
Nein false

Autorisierungsobjekt

Die Autorisierungskontextvariable empfängt ein Objekt vom Typ Authorization.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
Eigenschaftenname BESCHREIBUNG
AccessToken Bearer-Zugriffstoken zum Autorisieren einer Back-End-HTTP-Anforderung.
Ansprüche Ansprüche, die von der Tokenantwort-API des Autorisierungsservers zurückgegeben werden (siehe RFC6749#section-5.1).

Verwendung

Hinweise zur Verwendung

  • Konfigurieren Sie identity-type=jwt, wenn die Zugriffsrichtlinie für die Verbindung einem Dienstprinzipal zugewiesen ist. Für JWT werden ausschließlich reine /.default-App-Bereiche unterstützt.

Beispiele

Rückgabe des Tokens

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

Rückgabe des Tokens mit dynamisch festgelegten Attributen

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

Anfügen des Tokens an den Back-End-Aufruf

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

Abrufen des Tokens aus der eingehenden Anforderung und Rückgabe des Tokens

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

Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier: