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

IdentityServer4 why do we need the discovery endpoint

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

我们有一个 带有 C# webservices 的网络服务器,只有授权用户才能访问。 我们想使用 IdentityServer4 来颁发 JWT 访问令牌。

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

我不明白这是如何保护的。

  • 我需要发布发现端点吗?

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

  • 我想知道我是否真的需要发布发现端点。不应该保护吗?
  • 还有其他方法解密Token吗?

感谢您的帮助!

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

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

让我们以 Google 的发现文档为例,可以找到它 here 您会注意到这是一个非常标准的发现文档,但是它们对该文档中的每个键都有一些自定义值.它们仅支持用于令牌签名的 RS256,并且它们支持由本文档中的 response_types_supported 密钥推断出的大量 openid 连接流。本文档可以直接为依赖此 OpenIDConnect 提供程序的任何客户端提供大量信息,而无需执行一些复杂的协议前导码。

最后关于您关于安全的问题。您确实需要发布发现端点。 jwks_uri 是包含您的 JSON Web 密钥集的 OpendIDConnect 提供商的 uri,这是一组用于验证令牌的安全材料(通常是 public 或共享密钥)验证过程。

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

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