DataPower API Gateway solo

OAuth variabili di contesto

È possibile personalizzare il flusso di sicurezza di " OAuth " in un provider nativo di " OAuth " aggiungendo più criteri " OAuth " all'assembly. Ogni politica di tipo « OAuth » riceve input dalle variabili di contesto e scrive l'output nelle variabili di contesto. Utilizzando queste variabili di contesto OAuth è possibile modificare la richiesta originale ed elaborare l'output generato da una policy OAuth.

Nota: le variabili di contesto di OAuth qui descritte si applicano solo a. DataPower® API Gateway Per ulteriori dettagli sulle variabili di contesto di OAuth applicabili a DataPower Gateway (v5 compatible), consultare rapim_context_var.html #rapim_context_var__oauth-variables.
Esistono due tipi principali di variabili di contesto dell' OAuth :

Variabili di informazioni

Queste variabili di contesto sono il risultato di una politica di OAuth. Non vengono utilizzati nell'elaborazione dell'azione OAuth.

oauth.result
Il risultato dell'ultima azione; restituisce SUCCESS o FAILURE.
oauth.settings.variable_name
Impostazioni di base del provider OAuth. Sono disponibili le seguenti variabili di contesto:
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
I componenti che sono stati eseguiti in questa transazione, con il risultato. Se si verifica un errore, verranno aggiunti l'errore e la descrizione dell'errore. Sono disponibili le seguenti variabili di contesto:
oauth.executed_components[0].result
oauth.executed_components[0].type
oauth.executed_components[0].error_description
oauth.executed_components[0].error
I valori possibili per la variabile type sono i seguenti:
ValidateRequestComponent
GenerateAZCodeComponent
VerifyAZCodeComponent
VerifyRefreshTokenComponent
GenerateAccessTokenComponent
IntrospectTokenComponent
RevokeTokenComponent
CollectMetaDataComponent
L'esempio seguente mostra un estratto JSON corrispondente dal contesto OAuth :
"executed_components": [
  {
    "type": "ValidateRequestComponent",
    "result": "SUCCESS"
  },
  {
    "type": "GenerateAccessTokenComponent",
    "result": "SUCCESS"
  }
]
oauth.verified_access_token.variable_name
Il token verificato nell'ambito dei requisiti di sicurezza per un provider nativo di OAuth. Sono disponibili le seguenti variabili di contesto:
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
Il token verificato nell'ambito dei requisiti di sicurezza per un provider di servizi di autenticazione ( OAuth ) di terze parti. Fornisce le seguenti informazioni:
  • Le intestazioni di risposta provenienti dal provider esterno di servizi di gestione delle e-mail ( OAuth ).
  • Il corpo della risposta proveniente dal provider di servizi di messaggistica istantanea ( OAuth ) esterno e di terze parti.
  • Indica se la risposta è memorizzata nella cache. Quando viene memorizzato nella cache, il valore è true. Quando non è memorizzato nella cache, il valore è false.
Sono disponibili le seguenti variabili di contesto:
oauth.third_party.headers
oauth.third_party.response
oauth.third_party.cached
oauth.code.variable_name
Il codice generato durante l'esecuzione di un componente di tipo GenerateAZCodeComponent. Sono disponibili le seguenti variabili di contesto:
oauth.code.client_id
oauth.code.code
oauth.code.redirect_uri
oauth.code.resource_owner
oauth.code.scope
oauth.token.variable_name
Il token generato durante l'esecuzione di un componente di tipo GenerateAccessTokenComponent. Sono disponibili le seguenti variabili di contesto:
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
Il token analizzato durante l'esecuzione di un componente di tipo IntrospectTokenComponent. Sono disponibili le seguenti variabili di contesto:
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
Gestione token quando si utilizza un gestore token esterno. Fornisce le seguenti informazioni:
  • Le intestazioni di risposta dal server di gestione esterno.
  • Il corpo JSON della risposta dal server di gestione esterno.
  • Quando la memorizzazione nella cache è abilitata, se la risposta viene trovata nella cache o se è impostata nella cache. Quando la memorizzazione nella cache non è abilitata, la risposta non è impostata nella cache.
Sono disponibili le seguenti variabili di contesto:
oauth.external_manager.headers
oauth.external_manager.response
oauth.external_manager.cached

Variabili di elaborazione

Queste variabili di contesto vengono elaborate durante l'esecuzione di una politica di tipo " OAuth " nell'assembly dell'API. Se vengono impostati prima di qualsiasi politica di OAuth, il loro valore prevale su quello inviato nella richiesta. È inoltre possibile modificarle tra una politica e l'altra di OAuth per determinare quale componente verrà eseguito successivamente. Sono disponibili le seguenti variabili di contesto:
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
L'esempio seguente mostra il codice sorgente di " OpenAPI " per una gateway-script politica che viene eseguita prima della politica " OAuth " nell'assembly dell'API e aggiunge un ambito personalizzato alla richiesta:
// 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");
L'esempio seguente mostra il codice sorgente di OpenAPI per una gateway-script politica che si colloca tra le politiche di OAuth nell'assembly e modifica l'ambito a seconda del proprietario della risorsa:
// 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");	
}

Variabili di contesto dell'ambito avanzato

Le seguenti variabili di contesto vengono utilizzate nel controllo avanzato dell'ambito di OAuth. Vengono popolati con i valori inseriti nei campi "Endpoint " e " TLS " del profilo client per il controllo dell'ambito dell'applicazione e il controllo dell'ambito del proprietario nella configurazione del provider nativo di OAuth. Non modificare questi valori poiché ciò potrebbe causare un'operazione di ambito avanzato non corretta.

Per informazioni sulla configurazione degli scope, consultare la sezione "Configurazione degli scope per un provider nativo di OAuth ". Per informazioni sul controllo dell'ambito avanzato, vedere Ambito.

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

Variabili di contesto di errore personalizzate

Queste variabili di contesto vengono utilizzate per interrompere l'elaborazione di OAuth e specificare i relativi dettagli dell'errore. Possono essere utilizzati prima dell'elaborazione d OAuth.
oauth.custom_error.status.code
oauth.custom_error.status.reason
oauth.custom_error.message
oauth.custom_error.description