我正在使用CakePHP 4.1构建Web应用程序。
并且它具有来自Microsoft活动目录(OAuth2)的授权。
我要做的是解码访问令牌,并在它过期时重定向到Microsoft登录页面。
这样我就可以从授权中得到令牌了。https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize?client_id=CLIENT_ID&response_type=token&redirect_uri=LOGIN_REDIRECT_URI&response_mode=form_post&scope=offline_access https://graph.microsoft.com/.default'
我尝试使用firebase/jwt
解码,但我不确定什么应该是$key
。
JWT::decode($accessToken, $key, array('RS256'))
如果在jwt.ms中输入标记,则可以获得解码结果
我没有任何特殊的claims
,所以$key
应该是plain
。
而且我想知道有没有另一种解码jwt的方法。
1条答案
按热度按时间yxyvkwin1#
Firebase JWT仅支持使用签名验证进行解码,因此始终需要密钥。
您可以手动解码令牌,它只是base64的JSON,但是如果没有验证,就无法知道信息是否是伪造的,所以我不会相信通过这种方式获得的任何信息,甚至包括过期时间。
通常,OAuth API会在访问令牌请求的响应中返回过期时间(Microsoft Identity Platform API也是如此),您的应用可以将其与令牌一起存储,并用于检查可能的令牌过期。
在收到来自API的无效令牌错误时进行刷新通常也是一种选择,这样您就完全不需要关心过期时间。
我当然会建议任何这些选择信任任意的客户端数据。
话虽如此,如果您仍然希望令牌提供未经验证的过期时间,只需执行Firebase JWT内部执行的操作:
http://github.com/firebase/php-jwt/blob/v5.2.0/src/JWT.php#L81-L94