IdentityServer4为什么需要发现端点

3
免责声明:我对IdentityServer还不熟悉。目前正在尝试使用IdentityServer4。
我们有一个带有C# Web服务的Web服务器,只有经过授权的用户才能访问。我们想使用IdentityServer4来发放JWT访问令牌。
合作伙伴正在访问令牌端点以获取JWT令牌。我们的后端Web服务接收到令牌后,会调用身份验证服务器上的发现端点来解密令牌。
我不理解这是如何保证安全的。
- 我需要发布发现端点吗? - 我只希望我的内部后端应用程序使用它。 - 我想知道是否真的需要发布发现端点。它不应该受到保护吗? - 是否有其他方法可以解密令牌?
感谢您的帮助!

1
发现终结点jwks url仅包含公钥(证书)。它产生的其余数据也不是敏感数据。您总是可以禁用它,但是然后您必须向所有验证令牌的地方(即所有资源)提供证书,并且放弃对OIDC客户端的支持,而是使用手动OpenId2配置。 - Mardoxx
1
我再次阅读了JWT的介绍:https://jwt.io/introduction/,现在我明白了。使用公钥时,我们不会暴露任何机密信息,令牌的安全性也不会受到影响。谢谢。 - PeterFromCologne
1个回答

10
发现端点 (.well-known/openid-configuration) 托管了所谓的发现文档。就大多数实际目的而言, OpenIDConnect 客户端可能使用此文档根据 OpenIDConnect 提供程序配置自己。
一般来说,某些客户端,无论是 .NET Java 还是 Python,可能希望获得发现文档,以便针对安全令牌服务器所假定发行的令牌进行令牌验证。
以 Google 的发现文档为例,可以在这里找到这里,您会注意到这是一个相当标准的发现文档,但是他们为该文档中的每个键提供了一些自定义值。他们仅支持 RS256 用于令牌签名,并且支持由此文档中的 response_types_supported 键推断出的一整套 openid 连接流。这个文档可以直接为依赖于此 OpenIDConnect 提供程序的任何客户端提供大量信息,而不必执行一些复杂的协议前言。
最后关于您有关安全性的问题。您确实需要发布发现端点。 jwks_uri 是您 OpendIDConnect 提供程序的 URI,其中包含您的 JSON Web 密钥集,这是一组安全材料(通常是公共或共享密钥),用于验证验证过程中的令牌。
您还可以使用发现文档找到内省端点来验证令牌。您不需要解密令牌,只需验证即可。令牌通过 SSL 的方式进行加密。因此,如果您想要使用内省端点验证令牌,则意味着您需要在每个使用 JWT 承载令牌的请求之上添加该往返调用以验证令牌。
简而言之,发现文档非常重要,其中包含的安全材料可以使您无需执行外带呼叫就能进行 JWT 验证。

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