【发布时间】:2021-03-02 18:58:25
【问题描述】:
过去 4 周在调试器中绕过控制器授权后,我最终决定在我支持 Swashbuckle 的 .NetCore 5 API 中处理 OpenID Connect 身份验证。我希望我没有,因为到目前为止我已经花了将近一天的时间没有找到可行的解决方案。
这里是一个简短的回顾。
- 最近才支持 Swagger-UI 中的 OpenID Connect。我发现此信息的唯一地方是海伦对this question 的评论。 Swagger Ui 3.38.0 仅在 Swashbuckle 6.0.7 中可用。
- 升级到最新的 Swashbuckle 后,我开始在 Swagger UI 中看到一堆“已发现”的授权选项。唉,基于错误,PKCE 似乎没有被使用,即使我在 Startup.cs 中明确设置了它:
.UseSwaggerUI(c => c.OAuthUsePkce());
此外,那里的 ClientSecret 没有意义,因为 PKCE 应该替换它(实际上我没有客户端密码)。 我的问题,是否有人在 Swagger UI 中使用 OpenID Connect with PKCE 和 Okta?
Auth ErrorError,错误:invalid_client,描述:浏览器对令牌端点的请求必须使用 Proof Key 进行代码交换。
【问题讨论】:
-
您可能需要使用 Swagger UI v. 3.43+,其中包括与 OIDC+PKCE 相关的 this change。
-
谢谢!原来我对 Swagger UI 版本的看法是错误的 - Swashbuckle 6.0.7 有 Swagger UI 3.42,但还不是 3.43。我会在几周后回到这个问题。
-
如果您解决了这个问题,请告诉我们
标签: asp.net-core swagger-ui okta swashbuckle.aspnetcore