tienes - ¿Cómo validar un token de acceso de OAuth 2.0 para un servidor de recursos?
post https login microsoftonline com common oauth2 token (5)
Forma de Google
Validación de tokens de Google Oauth2
Solicitud:
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg
Responder:
{
"audience":"8819981768.apps.googleusercontent.com",
"user_id":"123456789",
"scope":"https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
"expires_in":436
}
Camino de Github
Github - Oauth2 verifica una autorización
Solicitud:
GET /applications/:client_id/tokens/:access_token
Responder:
{
"id": 1,
"url": "https://api.github.com/authorizations/1",
"scopes": [
"public_repo"
],
"token": "abc123",
"app": {
"url": "http://my-github-app.com",
"name": "my github app",
"client_id": "abcde12345fghij67890"
},
"note": "optional note",
"note_url": "http://optional/note/url",
"updated_at": "2011-09-06T20:39:23Z",
"created_at": "2011-09-06T17:26:27Z",
"user": {
"login": "octocat",
"id": 1,
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"gravatar_id": "somehexcode",
"url": "https://api.github.com/users/octocat"
}
}
Manera de Amazon
Iniciar sesión con Amazon - Guía del desarrollador (diciembre de 2015, página 21)
Solicitud :
https://api.amazon.com/auth/O2/tokeninfo?access_token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR...
Respuesta:
HTTP/l.l 200 OK
Date: Fri, 3l May 20l3 23:22:l0 GMT
x-amzn-RequestId: eb5be423-ca48-lle2-84ad-5775f45l4b09
Content-Type: application/json
Content-Length: 247
{
"iss":"https://www.amazon.com",
"user_id": "amznl.account.K2LI23KL2LK2",
"aud": "amznl.oa2-client.ASFWDFBRN",
"app_id": "amznl.application.436457DFHDH",
"exp": 3597,
"iat": l3ll280970
}
Cuando un cliente le pide a un servidor de recursos que obtenga un recurso protegido con un token de acceso OAuth 2.0, ¿cómo valida este servidor el token? ¿El protocolo de token de actualización de OAuth 2.0?
La especificación OAuth 2.0 no define la parte. Pero podría haber un par de opciones:
Cuando el servidor de recursos obtiene el token en el encabezado Authz, llama a la API validate / introspect en el servidor Authz para validar el token. Aquí, el servidor Authz podría validarlo desde el uso de DB Store o verificando la firma y ciertos atributos. Como parte de la respuesta, decodifica el token y envía los datos reales del token junto con el tiempo restante de caducidad.
Authz Server puede encriptar / firmar el token usando una clave privada y luego publickey / cert se puede dar a Resource Server. Cuando el servidor de recursos obtiene el token, descifra / verifica la firma para verificar el token. Elimina el contenido y procesa el token. Luego puede proporcionar acceso o rechazar.
Las especificaciones de OAuth v2 indican:
Los atributos token de acceso y los métodos utilizados para acceder a los recursos protegidos están fuera del alcance de esta especificación y están definidos por las especificaciones complementarias.
Mi servidor de autorización tiene un punto final de servicio web (SOAP) que permite que el servidor de recursos sepa si access_token es válido.
Una actualización sobre la respuesta de @Scott T.: la interfaz entre el Servidor de recursos y el Servidor de autorización para la validación de tokens se estandarizó en IETF RFC 7662 en octubre de 2015, consulte: https://tools.ietf.org/html/rfc7662 . Una llamada de validación de muestra se vería así:
POST /introspect HTTP/1.1
Host: server.example.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer 23410913-abewfq.123483
token=2YotnFZFEjr1zCsicMWpAA
y una respuesta de muestra:
HTTP/1.1 200 OK
Content-Type: application/json
{
"active": true,
"client_id": "l238j323ds-23ij4",
"username": "jdoe",
"scope": "read write dolphin",
"sub": "Z5O3upPC88QrAjx00dis",
"aud": "https://protected.example.net/resource",
"iss": "https://server.example.com/",
"exp": 1419356238,
"iat": 1419350238,
"extension_field": "twenty-seven"
}
Por supuesto, la adopción por parte de los proveedores y productos tendrá que suceder con el tiempo.
Actualización de noviembre de 2015 - según Hans Z. a continuación - esto ahora está definido como parte de RFC 7662 .
La especificación OAuth 2.0 no define claramente la interacción entre un servidor de recursos (RS) y un servidor de autorización (AS) para la validación de token de acceso (AT). Realmente depende del formato / estrategia del token de AS: algunos tokens son autónomos (como JSON Web Tokens ), mientras que otros pueden ser similares a una cookie de sesión, ya que simplemente hacen referencia a la información en el AS en la memoria.
Se ha debatido en el Grupo de trabajo de OAuth sobre la creación de una forma estándar para que un RS se comunique con el AS para la validación de AT. Mi empresa (Ping Identity) ha ideado uno de estos enfoques para nuestro comercial OAuth AS (PingFederate): https://documentation.pingidentity.com/pingfederate/pf/index.shtml#concept_grantTypeParameters.html#concept_grantTypeParameters (ver validación de token de acceso) tipo de subvención ). Utiliza la interacción basada en REST para esto que es muy complementaria a OAuth 2.
-