首页 > 解决方案 > Identity Server 4 OpenID Connect Discovery 是否应该公开?

问题描述

.well-known/openid-configurationIdentity Server 4 通过url公开 OpenID Connect Discovery 。现在我不完全清楚为什么会在这里或谁应该可以访问它。我理解这一点的方式,这个页面所做的就是提供有关端点的信息。

可以访问我的 IS4 服务器的应用程序将预先配置端点,因为它们都是内部的,所以我认为没有理由公开这个页面,我认为不泄露这些信息更安全。

因此,我的问题是我应该限制对这个页面的访问吗?如果是,怎么做?如果不是,为什么?

标签: c#identityserver4openid-connect

解决方案


保留该端点的主要好处是自动客户端配置。从AspNet.Security.OpenIdConnect.Samples GitHub 页面上的 MVC 示例

// Note: setting the Authority allows the OIDC client middleware to automatically
// retrieve the identity provider's configuration and spare you from setting
// the different endpoints URIs or the token validation parameters explicitly.
Authority = "http://localhost:54540/"

服务器库能够在启动期间更改任何端点路径,例如用于获取令牌的端点。通过使用自动配置,您的应用程序可以自动接受该更改,而无需手动更新所有客户端应用程序。

如果您想使用它,此功能只是为了方便而提供。


如果这个应用程序只暴露给你的内部网络(或者只是在你自己的计算机或 Docker 网络中),那么保持这个状态绝对没有什么坏处。

如果此应用程序暴露在公共网络中,那么您需要开始询问自己是否希望攻击者知道配置端点提供的信息。

攻击者只知道应用程序是一个身份验证服务器、到各种端点的路径、您支持的 OAuth2 流类型,以及其他一些小细节。如果您有面向公众的文档,那么这只是它的机器可读版本。

不要专注于阻止对配置端点的访问,而是确保您的 Auth 服务器端点已通过身份验证。在分发令牌之前,您应该检查 Client Id 和 Client Secret 是否存在且正确。

来自oauth.com(这是关于自省端点,但实际上该原理适用于所有端点):

如果内省端点保持打开且未受到限制,则它为攻击者提供了一种轮询端点以获取有效令牌的方法。为了防止这种情况,服务器必须要求使用端点对客户端进行身份验证,或者仅通过防火墙等其他方式使端点对内部服务器可用。


推荐阅读