验证 OpenIdConnect 配置

Posted

技术标签:

【中文标题】验证 OpenIdConnect 配置【英文标题】:Validate OpenIdConnect configuration 【发布时间】:2021-12-21 05:57:24 【问题描述】:

将客户端配置为使用 OpenIdConnect 时,您可以指定 clientId、clientSecret 和权限。

有没有简单的方法来验证这些配置是否正确?

为了授权,我可以简单地检查一下我是否从 discodoc (/.well-known/openid-configuration) 收到了 200 响应。

但是对于 clientId 和 clientSecret,有什么推荐的方法来检查它们是否有效和正确,而不需要实际尝试身份验证?

作为背景,我正在努力尽早发现 CI/CD 管道中的错误配置。如果我可以自动执行这些检查,诸如 clientId 不存在于授权中,或者 clientId 存在但 clientSecret 不正确等问题可能/应该很容易被捕获。

【问题讨论】:

【参考方案1】:

我明白了,因为 OAuth 架构中有很多活动部分,这些是我使用过的技术:

支持的错误显示

在开发过程中,我故意错误配置设置并确保错误显示有助于在任何时间点快速解决问题。例如查看this mobile example中的错误截图。

UI 测试框架

Selenium 等 UI 测试框架可能是一个不错的选择。作为生产系统的测试用户帐户运行夜间登录测试。如果 UI 登录有效,您就知道客户端 ID 和密码是正确的。

编码测试

UI 使用的代码流很难以自动化方式进行测试,而 UI 框架可能是最佳选择。如果你想使用代码,它需要像浏览器一样工作并遵循重定向、自动发布表单等。我很少使用它,因为代码会变得有点不愉快,但是here is an example。

【讨论】:

谢谢,那里有一些很好的例子。 oidc 中似乎没有专门支持配置验证的内容,因此您必须在每种方法中实际执行登录?【参考方案2】:

如果您的客户端可以执行客户端凭据流,那么您可以使用该流调用令牌端点并查看是否收到 200 响应。此流程可以直接从代码执行,不需要用户进行任何交互,因此您可以轻松检查 clientID 和 secret 是否有效。

【讨论】:

谢谢,等我回到那个项目时试试看

以上是关于验证 OpenIdConnect 配置的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core 3.1 合并 JWT 和 OpenIDConnect 身份验证

MicrosoftAccount、AzureAD 和 OpenIdConnect 身份验证有啥区别?

通过 Ajax 请求时完成 OpenIDConnect 身份验证

OpenIdConnect 从 OpenId 提供者验证 jwt

ASP.NET Core 5 OpenIdConnect 身份验证 cookie 在理论上是如何工作的?

OWIN OpenIdConnect 中间件 IDX10311 随机数无法验证