我可以在没有客户端密码的情况下使用带有 PKCE 的 IdentityServer3 授权代码流吗?

Posted

技术标签:

【中文标题】我可以在没有客户端密码的情况下使用带有 PKCE 的 IdentityServer3 授权代码流吗?【英文标题】:Can I use IdentityServer3 Authorization Code Flow with PKCE and no client secret? 【发布时间】:2019-10-25 07:12:43 【问题描述】:

我希望扩展我们的 ID 服务器实例以支持移动应用程序,并希望将授权代码流与 PKCE 一起使用。由于这是一个公共客户端,我不希望将秘密存储在应用程序上,但似乎 ID3 需要一个秘密。任何人都可以确认这一点,就好像我可能需要考虑将 ID3 升级到 ID4 一样,这将成为我的时间线问题?

亲切的问候, 最后的建造者

【问题讨论】:

【参考方案1】:

为公共客户端指定密钥不是代码 + PKCE 流程的问题。在那种情况下it's just a rudiment,几乎不会增加安全性。这就是为什么他们引入了一个完全关闭它的选项。

【讨论】:

他们是在 ID3 还是 ID4 中添加了选项? 他们在 Identityserver4 的开头添加了该选项(用于 ASP.Net Core 1x)。最新的(也是最后一个)是 Identityserver4 v.4(用于 ASP.Net Core 3x)。 Identityserver3(不带选项)适用于 .Net 4.x 和 OWIN。 (只是为了避免任何误解) 感谢@d-f,我们使用 ID3 已经有一段时间了,但才刚刚开始研究 PKCE,所以我想知道我是否错过了这个选项。

以上是关于我可以在没有客户端密码的情况下使用带有 PKCE 的 IdentityServer3 授权代码流吗?的主要内容,如果未能解决你的问题,请参考以下文章

Spotify PKCE。错误无效的客户端密码

如何使用 PKCE 登录 Google.Apis.Drive.v3 for .NET?

Azure AD:带有 PKCE 的代码流:没有为应用程序启用 id_token

无法使用 openid_client 通过带有 keycloak 的 pkce Flutter 应用程序进行身份验证

Keycloak、PKCE 和外部 IDP

使用openid_client通过带有ke​​ycloak的pkce颤振应用程序进行身份验证后如何获取刷新令牌?