Azure AD B2C使用PHP验证JWT

5

警告:我对JWT一窍不通,试图弄清楚它的全部内容。

首先...我了解到:

JWT包含由.分隔的三个部分。第一部分可以被base64解码以获取“something”,从而验证第二(和第三?)段中的声明。

我能够获得id_token,并将每个部分分离成其各自的JSON对象...但这样显然不安全 :)

我查看了https://github.com/firebase/php-jwt,但我不确定要为解码JWT提供哪个KEY(我知道我可以解码第一部分并获取用于JWT的kid,但当我有了特定的key对象时...我不知道要传递什么给firebase来进行解码?https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in

请原谅我对JWT的可怕理解 :/

编辑:更多信息

使用此ID TOKEN:eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IklkVG9rZW5TaWduaW5nS2V5Q29udGFpbmVyIn0.eyJleHAiOjE0NDIzNjAwMzQsIm5iZiI6MTQ0MjM1NjQzNCwidmVyIjoiMS4wIiwiaXNzIjoiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tLzc3NTUyN2ZmLTlhMzctNDMwNy04YjNkLWNjMzExZjU4ZDkyNS92Mi4wLyIsImFjciI6ImIyY18xX3NpZ25faW5fc3RvY2siLCJzdWIiOiJOb3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4gVXNlIG9pZCBjbGFpbS4iLCJhdWQiOiI5MGMwZmU2My1iY2YyLTQ0ZDUtOGZiNy1iOGJiYzBiMjlkYzYiLCJpYXQiOjE0NDIzNTY0MzQsImF1dGhfdGltZSI6MTQ0MjM1NjQzNCwiaWRwIjoiZmFjZWJvb2suY29tIn0.h-uiKcrT882pSKUtWCpj-_3b3vPs3bOWsESAhPMrL-iIIacKc6_uZrWxaWvIYkLra5czBcGKWrYwrAC8ZvQeDJWZ50WXQrZYODEW1OUwzaD_I1f1HE0c2uvaWdGXBpDEVdsD3ExKaFlKGjFR2V7F-fPThkVDdKmkUDQX3bVcyyj2V2nlCQ9jd7aGnokTPfLfpOjuIrTsAdPcGpe5hfSEuwYDmqOJjGs9Jp1f-eSNEiCDQOaTBSvr479L5ptPXWeQZyX2SypN05Rjr05bjZh3j70ZUimiocfJzjibeoDCaQTz907yAg91WYuFOrQxb-5BaUoR7K-O7vxr2M-_CQhoFA

我可以将头部段eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IklkVG9rZW5TaWduaW5nS2V5Q29udGFpbmVyIn0解码为{"typ":"JWT","alg":"RS256","kid":"IdTokenSigningKeyContainer"}
然后查看https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in,我知道这个密钥对象已被使用。
所以...我需要向Firebase传递哪个密钥值?

1
请从这里开始:https://github.com/Azure-Samples/active-directory-b2c-php-webapp-openidconnect - astaykov
谢谢!我能够从那个代码库中解析出一些逻辑/函数,并在我的 Firebase 和 LibSec 实例中使用它,现在已经有了一个可行的解决方案 :) - Ray
1个回答

3

请接受您自己的答案,这样其他人也可以从中受益。谢谢。 - Aaron Chen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接