Me gustaría comprender mejor cómo funciona la verificación de token de cliente uaa con la fundición en la nube.

Después de iniciar sesión con la herramienta cf de fundición en la nube, obtuve un token firmado al usar

cf oauth-token

Según tengo entendido, este token ha sido firmado por cf client y contiene el token de acceso original que recibió de la uaa después de iniciar sesión.

Ahora puedo decodificar este token con cualquier analizador jwt en línea (el token no es información confidencial, ya que la herramienta cf solo está dirigida a mi instalación local de bosh-lite). Sin embargo, ¿cómo puedo validar que el token es correcto? Esta suele ser una tarea que luego haría el controlador de la nube, ¿correcto?

He intentado usar la biblioteca java JJWT de la siguiente manera:

Jwts.parser().setSigningKey("").parseClaimsJws(token).getBody();

Sin embargo, se queja de la clave de firma vacía. ¿Cuál es la clave de firma que utiliza el cliente cf? ¿El secreto del cliente está registrado en la UAA?

Cualquier aclaración es muy apreciada.

1
user152468 27 ene. 2016 a las 19:00

2 respuestas

La mejor respuesta

Mi entendimiento actual es que CF CLI simplemente guarda el token codificado y firmado generado por UAA. Este token está firmado con la clave privada de UAA y solo se puede verificar con la clave de verificación pública de UAA correspondiente.

Para que pueda verificar ese token, tiene dos opciones:

1) Utilice el punto final de UAA (/ check_token) que verifica un token determinado por usted, en este enfoque No necesita la clave de verificación de UAA.

Consulte https://github.com/cloudfoundry/uaa/blob/master/server/src/main/java/org/cloudfoundry/identity/uaa/oauth/RemoteTokenServices.java

2) Recupere la clave de verificación pública UAA (/ token_key) y escriba algún código para verificar la firma jwt.

Ver https://github.com/cloudfoundry-incubator/routing -api / blob / master / authentication / token_validator.go

Según el enfoque que adopte, puede imitar la implementación correspondiente utilizando JS.

Espero que eso ayude.

3
fordaz 27 ene. 2016 a las 23:32

Todo lo que necesita es la clave de verificación (suponiendo que realmente desee verificar la firma del token)

Así es como funciona 1. Puede analizar el token JWT sin claves, y sin claves no debería validar la firma 2. Si desea validar la firma, proporcione una clave de verificación

La clave de verificación se encuentra en uaa./token_keys

https://uaa.run.pivotal.io/token_keys

2
user3217225user3217225 27 ene. 2016 a las 19:25