入门级问题(我是JWT /加密新手)
我的令牌:eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InU0T2ZORlBId0VCb3NIanRyYXVPYlY4NExuWSIsImtpZCI6InU0T2XORlBId0VCb3NIanYY9。kwfGrWiQwqhJpZfryW9D1hHDC2AC6tUT16OXkmlIeyxTMqY0gdO0U3KClYczDzMs6kpXc5sQOBaTrBQgERnfKf1nqrHoDmHzaKmY20LKByMopH9uhcPF3lkDNW - dfruNHywF6DZ4cLtgSWcZOBs_BAwQqy1i5Hja7WNf5InyhyscXjUdntIz9rK599IzvD8MwkgYViMEXATNNh2CvEqRp-AZxVjCP_cI6h9Lx3j8__9xRIoWIwnv_rqHGcPpg6hJMfUJMtlLjJaBo0h0veCCZj-fUORidN7EPHNSw9IJF29-nGhw6rmkcD7F8q6WpK8dUfiYGk_QxOCRTw9gpkKKA
当我将其粘贴到jwt.io时,它会自动填充一些公共密钥并说已通过验证。它怎么知道公钥?
摘自JWT最新最佳实践(BCP)(2019年6月6日草案):
确定发行者拥有的密钥的方法是特定于应用程序的。作为一个示例,OpenID Connect颁发者值是
https引用JSON元数据文档的URL,该JSON元数据文档包含一个jwks_uri值,该值是https作为JWK集[RFC7517]从中检索颁发者的密钥的URL。ietf-oauth-discovery使用相同的机制。其他应用程序可能使用不同的方式将密钥绑定到发行者。
OIDC发现规范中记录了OpenID Connect(OIDC)提供程序元数据位置
支持发现的OpenID提供者必须在将字符串连接
/.well-known/openid-configuration到颁发者所形成的路径上提供JSON文档 。的语法和语义.well-known在RFC 5785中定义,当它不包含路径组件时,将应用于Issuer值。
如果您使用Claim 的值iss,将/.well-known/openid-configuration其附加到该URL上,然后将结果URL弹出到浏览器中,您将看到OIDC Provider元数据。此元数据文档中的键之一是jwks_uri指向带有JSON Web密钥集的另一个文档。后者是一组JSON Web密钥(JWK)。JWK是加密密钥的JSON表示形式。为了标识集合中的所需JWK,使用了来自所讨论令牌的声明x5t(证书/公钥的X.509指纹)和/或kid(密钥别名,通常与指纹相同)。
jwt.io通过基于iss声明提取OIDC元数据,成功欺骗了整个序列的第一步。如果JWT是由不讲OpenID Connect和/或未实现所有这些相关规范的服务发行的,jwt.io则找不到找到验证签名的密钥。
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |