Advertencia: soy un novato total de JWT y estoy tratando de resolverlo todo.
Primero... lo que entiendo: JWT contiene tres segmentos separados por .
La primera parte se puede decodificar en base64 para obtener "algo" donde pueda validar las afirmaciones en el segundo (¿y el tercero?) segmento.
Puedo recuperar el id_token
y puedo separar cada segmento en su objeto JSON respectivo... pero eso no es seguro en absoluto :)
Eché un vistazo a este https://github.com/firebase/php-jwt pero no estoy seguro de qué CLAVE debo proporcionar para decodificar el JWT (sé que puedo decodificar el primer segmento y usar al kid
para el JWT pero cuando tengo ese objeto key
específico... ¿No estoy seguro de qué pasar a firebase para decodificarlo? =b2c_1_iniciar sesión
Disculpe mi horrible comprensión de JWT: /
EDITAR: Más información
Usando este TOKEN de ID: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IklkVG9rZW5TaWduaW5nS2V5Q29udGFpbmVyIn0. eyJleHAiOjE0NDIzNjAwMzQsIm5iZiI6MTQ0MjM1NjQzNCwidmVyIjoiMS4wIiwiaXNzIjoiaHR0cHM6Ly9s b2dpbi5taWNyb3NvZnRvbmxpbmUuY29tLzc3NTUyN2ZmLTlhMzctNDMwNy04YjNkLWNjMzExZjU4ZDkyNS92 Mi4wLyIsImFjciI6ImIyY18xX3NpZ25faW5fc3RvY2siLCJzdWIiOiJOb3Qgc3VwcG9ydGVkIGN1cnJlbnRs eS4gVXNlIG9pZCBjbGFpbS4iLCJhdWQiOiI5MGMwZmU2My1iY2YyLTQ0ZDUtOGZiNy1iOGJiYzBiMjlkYzYi LCJpYXQiOjE0NDIzNTY0MzQsImF1dGhfdGltZSI6MTQ0MjM1NjQzNCwiaWRwIjoiZmFjZWJvb2suY29tIn0. h-uiKcrT882pSKUtWCpj-_3b3vPs3bOWsESAhPMrL-iIIacKc6_uZrWxaWvIYkLra5czBcGKWrYwrAC8ZvQe DJWZ50WXQrZYODEW1OUwzaD_I1f1HE0c2uvaWdGXBpDEVdsD3ExKaFlKGjFR2V7F-fPThkVDdKmkUDQX3bVc yyj2V2nlCQ9jd7aGnokTPfLfpOjuIrTsAdPcGpe5hfSEuwYDmqOJjGs9Jp1f-eSNEiCDQOaTBSvr479L5ptP XWeQZyX2SypN05Rjr05bjZh3j70ZUimiocfJzjibeoDCaQTz907yAg91WYuFOrQxb-5BaUoR7K-O7vxr2M-_ CQhoFA
Puedo decodificar el segmento de encabezado eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IklkVG9rZW5TaWduaW5nS2V5Q29udGFpbmVyIn0
a {"typ":"JWT","alg":"RS256","kid":"IdTokenSigningKeyContainer"}
luego mirando https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in
Sé que este objeto clave fue utilizado
{"kid":"IdTokenSigningKeyContainer","use":"sig","kty":"RSA","e":"AQAB","n":"tLDZVZ2Eq_DFwNp24yeSq_Ha0MYbYOJs_WXIgVxQGabu5cZ9561OUtYWdB6xXXZLaZxFG02P5U2rC_CT1r0lPfC_KHYrviJ5Y_Ekif7iFV_1omLAiRksQziwA1i-hND32N5kxwEGNmZViVjWMBZ43wbIdWss4IMhrJy1WNQ07Fqp1Ee6o7QM1hTBve7bbkJkUAfjtC7mwIWqZdWoYIWBTZRXvhMgs_Aeb_pnDekosqDoWQ5aMklk3NvaaBBESqlRAJZUUf5WDFoJh7yRELOFF4lWJxtArTEiQPWVTX6PCs0klVPU6SRQqrtc4kKLCp1AC5EJqPYRGiEJpSz2nUhmAQ"}
entonces... ¿qué valor para la clave le pasaría a firebase?
En caso de que alguien esté buscando ponerse en marcha rápidamente y/o esté confundido como yo; ¿Puedo recomendar el enlace que @astaykov señaló en el comentario de la pregunta?
https://github.com/Azure-Samples/active-directory-b2c-php-webapp-openidconnect
Junto con una clase simple que creé para la concesión del código de autorización (maneja la obtención de la URL de SSO, el token OAuth2 y la validación de id_token usando bibliotecas externas)
https://gist.github.com/rcosgrave/ec92938181096fd8847a38c9cc6a37d0