Nur DataPower-API-Gateway

OAuth-Kontextvariablen

Sie können den OAuth-Sicherheitsdatenfluss in einem nativen OAuth-Provider anpassen, indem Sie mehrere OAuth-Richtlinien zur Assembly hinzufügen. Jede OAuth-Richtlinie übernimmt die Eingabe aus Kontextvariablen und schreibt die Ausgabe in Kontextvariablen. Durch die Verwendung dieser OAuth-Kontextvariablen können Sie die ursprüngliche Anforderung bearbeiten und die Ausgabe aus einer OAuth-Richtlinie verarbeiten.

Hinweis: Die hier beschriebenen OAuth-Kontextvariablen gelten nur für DataPower® API Gateway. Details zu den OAuth-Kontextvariablen, die für DataPower Gateway (v5 compatible)gelten, finden Sie unter rapim_context_var.html#rapim_context_var__oauth-variables.
Es gibt zwei Haupttypen von OAuth-Kontextvariablen:

Informationsvariablen

Diese Kontextvariablen sind Ausgaben einer OAuth-Richtlinie. Sie werden bei der Verarbeitung der OAuth-Aktion nicht verwendet.

oauth.result
Das Ergebnis der letzten Aktion; gibt SUCCESS oder FAILURE zurück.
oauth.settings.variable_name
Basiseinstellungen des OAuth-Providers. Die folgenden Kontextvariablen sind verfügbar:
oauth.settings.allowed_scopes
oauth.settings.access_token_ttl
oauth.settings.authorization_code_ttl
oauth.settings.refresh_token_ttl
oauth.settings.refresh_token_limit
oauth.settings.maximum_consent_ttl
oauth.executed_components[0].variable_name
Die Komponenten, die in dieser Transaktion ausgeführt wurden, mit ihrem Ergebnis. Wenn ein Fehler auftritt, werden der Fehler und die Fehlerbeschreibung hinzugefügt. Die folgenden Kontextvariablen sind verfügbar:
oauth.executed_components[0].result
oauth.executed_components[0].type
oauth.executed_components[0].error_description
oauth.executed_components[0].error
Die möglichen Werte für die Variable type lauten wie folgt:
ValidateRequestComponent
GenerateAZCodeComponent
VerifyAZCodeComponent
VerifyRefreshTokenComponent
GenerateAccessTokenComponent
IntrospectTokenComponent
RevokeTokenComponent
CollectMetaDataComponent
Das folgende Beispiel zeigt einen entsprechenden JSON-Auszug aus dem OAuth-Kontext:
"executed_components": [
  {
    "type": "ValidateRequestComponent",
    "result": "SUCCESS"
  },
  {
    "type": "GenerateAccessTokenComponent",
    "result": "SUCCESS"
  }
]
oauth.verified_access_token.variable_name
Das Token, das in der Sicherheitsanforderung für einen nativen OAuth-Provider überprüft wurde. Die folgenden Kontextvariablen sind verfügbar:
oauth.verified_access_token.access_token

oauth.verified_access_token.client_id
oauth.verified_access_token.consented_on
oauth.verified_access_token.consented_on_text
oauth.verified_access_token.grant_type
oauth.verified_access_token.misc_info
oauth.verified_access_token.not_after
oauth.verified_access_token.not_after_text
oauth.verified_access_token.not_before
oauth.verified_access_token.not_before_text
oauth.verified_access_token.one_time_use
oauth.verified_access_token.resource_owner
oauth.verified_access_token.scope
oauth.third_party.variable_name
Das Token, das in der Sicherheitsanforderung für einen OAuth-Provider eines Drittanbieters überprüft wurde. Stellt die folgenden Informationen bereit:
  • Die Antwortheader aus dem externen OAuth-Provider eines Drittanbieters.
  • Den Antworthauptteil aus dem externen OAuth-Provider eines Drittanbieters.
  • Ob die Antwort zwischengespeichert wird. Wird sie zwischengespeichert, lautet der Wert true. Wird sie nicht zwischengespeichert, lautet der Wert false.
Die folgenden Kontextvariablen sind verfügbar:
oauth.third_party.headers
oauth.third_party.response
oauth.third_party.cached
oauth.code.variable_name
Der Code, der während der Ausführung einer Komponente vom Typ GenerateAZCodeComponent generiert wurde. Die folgenden Kontextvariablen sind verfügbar:
oauth.code.client_id
oauth.code.code
oauth.code.redirect_uri
oauth.code.resource_owner
oauth.code.scope
oauth.token.variable_name
Das Token, das während der Ausführung einer Komponente vom Typ GenerateAccessTokenComponent generiert wurde. Die folgenden Kontextvariablen sind verfügbar:
oauth.token.token_type
oauth.token.access_token
oauth.token.scope
oauth.token.expires_in
oauth.token.consented_on
oauth.token.redirect_uri
oauth.token.resource_owner
oauth.token.client_id
oauth.token.refresh_token
oauth.token.refresh_token_expires_in
oauth.token.refresh_token_count
oauth.introspect.variable_name
Das Token, für das während der Ausführung einer Komponente vom Typ IntrospectTokenComponent eine Introspektion durchgeführt wurde. Die folgenden Kontextvariablen sind verfügbar:
oauth.introspect.active
oauth.introspect.scope
oauth.introspect.client_id
oauth.introspect.resource_owner
oauth.introspect.token_type
oauth.introspect.grant_type
oauth.introspect.ttl
oauth.introspect.expires
oauth.introspect.expires_text
oauth.introspect.iat
oauth.introspect.not_before
oauth.introspect.not_before_text
oauth.introspect.consented_on
oauth.introspect.consented_on_text
oauth.introspect.one_time_use
oauth.external_manager.variable_name
Token-Management bei Verwendung eines externen Token-Managers. Stellt die folgenden Informationen bereit:
  • Die Antwortheader vom externen Management-Server.
  • Der JSON-Antworthauptteil vom externen Management-Server.
  • Wenn Caching aktiviert ist, gibt dieser Parameter an, ob die Antwort im Cache gefunden oder im Cache festgelegt wurde. Wenn Caching nicht aktiviert ist, gibt dieser Parameter an, dass die Antwort nicht im Cache festgelegt wurde.
Die folgenden Kontextvariablen sind verfügbar:
oauth.external_manager.headers
oauth.external_manager.response
oauth.external_manager.cached

Variablen verarbeiten

Diese Kontextvariablen werden während der Ausführung einer OAuth-Richtlinie in Ihrer API-Assembly verarbeitet. Wenn sie vor einer OAuth-Richtlinie festgelegt werden, setzt dieser Wert den in der Anforderung gesendeten Wert außer Kraft. Sie können auch zwischen OAuth-Richtlinien geändert werden, um die nächste Komponente zu bearbeiten, die ausgeführt wird. Die folgenden Kontextvariablen sind verfügbar:
oauth.processing.assertion
oauth.processing.client_id
oauth.processing.client_secret
oauth.processing.grant_type
oauth.processing.redirect_uri
oauth.processing.scope
oauth.processing.response_type
oauth.processing.state
oauth.processing.resource_owner
oauth.processing.refresh_token
oauth.processing.code
oauth.processing.token
oauth.processing.token_type_hint
oauth.processing.nonce
oauth.processing.max_age
oauth.processing.oidc_values_requested
oauth.processing.id_token_requested
oauth.processing.oidc_signing_algorithm
oauth.processing.code_challenge
oauth.processing.code_challenge_method
oauth.processing.code_verifier

oauth.processing.metadata.access_token
oauth.processing.metadata.payload
oauth.processing.metadata.azcode_miscinfo

oauth.processing.verified_code.client_id
oauth.processing.verified_code.resource_owner
oauth.processing.verified_code.misc_info
oauth.processing.verified_code.scope
oauth.processing.verified_code.is_verified
oauth.processing.verified_code.nonce

oauth.processing.verified_refresh_token.client_id
oauth.processing.verified_refresh_token.resource_owner
oauth.processing.verified_refresh_token.misc_info
oauth.processing.verified_refresh_token.scope
oauth.processing.verified_refresh_token.refresh_token_count
oauth.processing.verified_refresh_token.is_verified
oauth.processing.verified_refresh_token.one_time_use
oauth.processing.verified_refresh_token.grant_type
Das folgende Beispiel zeigt den OpenAPI-Quellcode für eine gateway-script-Richtlinie, die vor einer OAuth-Richtlinie in Ihrer API-Assembly ausgeführt wird und einen angepassten Bereich zur Anforderung hinzufügt:
// Add another custom scope to the request
let scope = context.get("request.parameters.scope.values[0]");
if (scope)
  context.set("oauth.processing.scope", scope + " custom");
Das folgende Beispiel zeigt den OpenAPI-Quellcode für eine gateway-script-Richtlinie, die zwischen OAuth-Richtlinien in Ihrer Assembly ausgeführt wird und den Bereich abhängig vom Ressourceneigner ändert:
// Check resource owner and modify the scope
let owner = context.get("oauth.processing.resource_owner");
let scope = context.get("oauth.processing.scope");

if (owner === 'admin') {
    context.set("oauth.processing.scope", scope + " admin");
} else {
    context.set("oauth.processing.scope", scope + " customer");	
}

Erweiterte Bereichskontextvariablen

Die folgenden Kontextvariablen werden in der erweiterten OAuth-Bereichsüberprüfung verwendet. Sie werden mit den Werten gefüllt, die in den Feldern Endpunkt und TLS-Clientprofil für Anwendungsbereichsüberprüfung und Eignerbereichsüberprüfung in der nativen OAuth-Provider-Konfiguration eingegeben wurden. Ändern Sie diese Werte nicht, da dies fehlerhafte Operationen im erweiterten Bereich zur Folge haben könnte.

Informationen zur Bereichskonfiguration finden Sie unter Bereiche für einen nativen OAuth-Provider konfigurieren. Informationen zur erweiterten Bereichsüberprüfung finden Sie unter Bereich.

oauth.advscope.app.url
oauth.advscope.app.tls-profile
oauth.advscope.own.url
oauth.advscope.own.tls-profile

Angepasste Fehlerkontextvariablen

Diese Kontextvariablen werden verwendet, um die OAuth-Verarbeitung zu stoppen und die jeweiligen Fehlerdetails anzugeben. Sie können vor der OAuth-Verarbeitung verwendet werden.
oauth.custom_error.status.code
oauth.custom_error.status.reason
oauth.custom_error.message
oauth.custom_error.description