OAuth Introspección para proveedores externos de servicios de « OAuth »
OAuth La validación de tokens se puede delegar al proveedor externo de Open Authorization ( OAuth )/Open ID Connect (OIDC) mediante el método « URL » de Introspection. Los clientes pueden utilizar un proveedor externo de autenticación de identidades ( OAuth ) u OIDC para obtener un token protegido por API Connect. IBM® API Connect puede utilizar esta función junto con el proveedor mencionado para proteger el acceso a la API.
Puede utilizar API Connect para proteger una API que esté protegida mediante el uso del token de acceso de terceros OAuth, de conformidad con la especificación de introspección definida en el RFC 7662. Además de la especificación, se proporciona la cabecera x-Introspect- para pasar otro contenido al tercero según sea necesario.
La información de autenticación se puede llevar en la solicitud configurando una cabecera de solicitud de autenticación básica.
El siguiente diagrama de secuencia muestra el flujo global de solicitud y respuesta. El propósito de este diagrama es solamente proporcionar una visualización general de la naturaleza del flujo; para los detalles precisos, consulte la información explicativa después del diagrama.

El servidor de autenticación Introspect URL está configurado en la configuración del proveedor externo OAuth. Consulte «Configuración de un proveedor de servicios de « OAuth » de terceros ».
Cuando una API está protegida por un proveedor de autenticación de terceros ( OAuth ), API Connect extrae el token de portador y envía una solicitud POST a HTTP al punto final especificado en el campo « URL » de Introspect.
La solicitud GET está protegida por API Connect con esta característica.
x-introspect-*. GET /petstore/pet/123 HTTP/1.1
Host: apiconnect.com
x-Introspect-type: dog
x-Introspect-name: simon
x-custom-apic: petstore123
Authorization: Bearer tGzv3JOkF0XG5Qx2TlKWIA
x-IBM-Client-Id: xxx-xxxNo obstante, si desea utilizar un prefijo de encabezado diferente, especifique el valor deseado en el campo «Patrón de encabezado personalizado» de la configuración del proveedor externo de OAuth. Para obtener más información sobre la configuración de un proveedor externo de OAuth, consulte «Configuración de un proveedor externo de OAuth ». La característica Patrón de cabecera personalizado sólo está disponible con DataPower® API Gateway, si utiliza DataPower Gateway (v5 compatible) , el prefijo de cabecera debe ser x-Introspect-.
x-tokenIntrospect, tal y como se muestra en el ejemplo de código: POST /oauth/introspectURL HTTP/1.1
Host: apiconnect.ibm.com
Content-Type: application/x-www-form-urlencoded
x-Introspect-type: dog
x-Introspect-name: simon
x-custom-apic: petstore123
token_type_hint=access_token&token=tGzv3JOkF0XG5Qx2TlKWIA
El proveedor externo de OIDC OAuth responde conHTTP 200indicando que la solicitud ha sido satisfactoria y que la carga útil contiene la información de señal. API Connect respeta la reclamación activa tal como se define en la especificación RFC.
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{ “active”:true,
“token_type”:“bearer”,
“client_id”:“xxx-xxx”,
“username”:“John Smith”,
...
} HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"active":false
}Un código de respuesta distinto de HTTP 200 indica que no se ha podido procesar la solicitud.
Cuando el token de OAuth es válido y está activo, las variables de contexto se rellenan con la información de la respuesta JSON de introspect. Para obtener más información, consulte Variables de contexto deAPI Connect.
Al ponerse en contacto con el punto final de introspección, API Connect utiliza client_id/appId y client_secret/appSecret para construir la cabecera de autorización básica HTTP.
x-introspect-basic-authorization-header existe en la solicitud, el valor se utiliza para la cabecera de autenticación HTTP Basic cuando se contacta con el endpoint de introspección. API Connect verifica que el valor de la cabecera de autenticación HTTP Basic esté codificado en Base64 antes de enviarlo, y lo codifica si es necesario como se muestra en el siguiente ejemplo. Si la cabecera ya está codificada, se envía sin modificación.GET /petstore/pet/123 HTTP/1.1
Host: apiconnect.com
x-introspect-basic-authorization-header: user:passwordAPI Connect emite lo siguiente:POST ..
Authorization: Basic M3JkLXBhcnR5LWNsaWVudF9pZDozcmQtcGFydHlfY2xpZW50X3NlY3JldA==token_type_hint=access_token&token= ..scope validate url configuran el ámbito y/o ambos, y si la respuesta es un token activo con una reclamación de ámbito procedente del punto final de introspección del proveedor de OAuth de terceros, se aplica API Connect además la validación del ámbito en el siguiente orden:- Si
scopeestá configurado para la protección de la API de OAuth, comprueba el ámbito de terceros y compáralo con el ámbito configurado. - Si
scope validation urlestá configurado, verifique el ámbito de terceros con la validación del ámbito URL. - Si el punto final de introspección del proveedor externo OAuth no devuelve un ámbito, la pasarela no comprobará el ámbito definido en la definición de seguridad de la API en la que se utiliza el recurso del proveedor externo OAuth. Para obtener más información sobre cómo configurar una definición de seguridad de « OAuth » en una API, consulte Creación de una definición de seguridad de « OAuth ».
- Proporcione una cabecera
suppress-parameterscomo se indica a continuación:suppress-parameters: client_id
osuppress-parameters: scope
en función de los parámetros que desee suprimir.suppress-parameters: client_id scope - Defina una propiedad de API denominada
suppress-parametersen la propia definición de API, con uno de los siguientes valores de serie:client_id
oscope
en función de los parámetros que desee suprimir. Para obtener información sobre cómo definir propiedades de API, consulte Establecimiento de propiedades de API.client_id scope