当您使用OIDC提供程序进行身份验证时,您将获得一个id令牌,如果您为API指定了范围,则会返回一个访问令牌,以便客户端应用程序可以代表最终用户向受保护资源发出请求。通常,访问令牌也是JWT。
但是什么阻止某人欺骗其中一个访问令牌,并创建一个并将其传递给API?我理解有防止修改的安全措施,因为签名将与任何验证逻辑所期望的不同,但是如果恶意用户手动创建了一个全新的,那会怎样?特别是因为这些令牌可以由任何需要访问令牌的API“就地”验证(并非所有API都使用内省端点...尤其是使用JWT)。我确实知道有来自OpenID Connect提供商的JWT签名密钥的元数据,并且它可以在OIDC发现文档中找到。例如,这是Google's JWK metadata。鉴于您已公开签名信息,并且可以在没有向OIDC提供商提出任何请求的情况下验证JWT访问令牌,JWT如何安全?什么阻止一个人创建一个并将其作为持有者令牌传递给需要访问令牌的API?
答案 0 :(得分:3)
但是什么阻止某人欺骗其中一个访问令牌,并创建一个并将其传递给API?
如果没有用于签署原始JWT的私钥(假设您使用像RS256这样的非对称签名算法),签名的欺骗和重建几乎是不可能的。
通过OIDC发现文档提供的JWK信息仅包含公钥。
还使用HTTPS进行授权/令牌交换以避免令牌嗅探。