IdentityServer4为什么我们需要发现端点

Pet*_*gne 3 openid openid-connect identityserver4

免责声明:我是IdentityServer的新手.目前正在试验IdentityServer4.

我们有一个带有C#webservices的Web服务器,只有授权用户才能访问它.我们希望使用IdentityServer4来发布JWT访问令牌.

合作伙伴正在访问令牌端点以获取JWT令牌.我们的后端Web服务正在接收令牌,然后调用身份服务器上的发现端点来解密令牌.

我不明白这是如何得到保障的.

  • 我是否需要发布发现端点?

我只希望我的内部后端应用程序使用它.

  • 我想知道我是否真的需要发布发现端点.它不应该受到保护吗?
  • 还有另一种解密令牌的方法吗?

谢谢您的帮助!

Lut*_*ndo 7

发现端点(.well-known/openid-configuration)托管所谓的发现文档.简而言之,对于大多数实际用途,OpenIDConnect客户端可能会使用此文档针对OpenIDConnect提供程序进行自我配置.

一般而言,某些客户端,无论实现平台如何,都是.NET Java或Python可能需要发现文档,以便针对据称由安全令牌服务器发布的令牌进行令牌验证.

让我们看一下Googles发现文档,例如可以在这里找到,你会注意到这是一个非常标准的发现文档,但是它们对于本文档中的每个键都有一些自定义值.它们仅支持RS256进行令牌签名,它们支持response_types_supported本文档中的密钥推断出的大量openid连接流.本文档可以直接向依赖此OpenIDConnect提供程序的任何客户端提供大量信息,而无需进行某些复杂的协议预处理.

最后关于您的安全问题.您需要发布发现端点.的jwks_uri是包含JSON网络密钥设置您的OpendIDConnect提供商的URI,这是一组用于验证在验证过程中的令牌安全材料(通常是公共或共享密钥)的.

您还可以使用内省端点(通过发现文档定位)来验证令牌.您没有解密令牌,它们只是经过验证.令牌通过SSL加密.因此,如果您愿意,可以使用内省端点来验证令牌,但这意味着您要添加该往返调用以在使用JWT承载令牌的每个请求之上验证令牌.

简而言之,发现文档非常重要,它包含的安全材料可以让您在不进行带外调用的情况下进行JWT验证.