【发布时间】:2021-04-20 12:13:38
【问题描述】:
最近花了几天时间研究如何使用 JWT 身份验证和/或 OIDC 保护 ASP.NET Core Web API/Web 应用程序。
到目前为止,我一直无法找到两个(?)不同的中间件扩展(.AddOpenIdConnect 和 .AddJwtBearer)的正确文档。通过谷歌搜索和实验,我得出了这样的假设:前者支持完整的 OIDC 舞蹈(验证、重定向到授权等,适用于 Web 应用程序),而后者仅用于 JWT 验证(更适合 API)。
我发现的文章都是秘籍,重点是如何为特定的 id 提供程序进行配置,例如 Azure 或 IdentityServer4,但我几乎没有发现任何真正深入研究这些组件的行为方式以及每个可配置选项如何影响它的文章行为。我的公司使用自己的 id 提供者进行身份验证和颁发 JWT 令牌,所以我发现的大多数食谱只提供偶尔的提示,而不是真正的理解。
我意识到文档必须存在,但除了 Microsoft 在 docs.microsoft.com 上提供的框架文档之外,我找不到任何其他内容。
非常感谢有关如何使用这两个中间件的更多详细信息;不是专门针对命名的 id 提供者,而是更一般地:
- 我的假设是否正确,即
.AddOpenIdConnect执行 JWT 验证并支持 OIDC 舞蹈,自动重定向到授权机构、令牌颁发者等? - 中间件是否依赖于cookie auth;即我可以省略
.AddCookie设置吗? - 同时使用这两个中间件组件(
.AddOpenIdConnect和.AddJwtBearer)是否有意义? - 请描述每个组件的行为,以及选项如何影响该行为。
- 必须指定哪些必需选项,哪些是可选选项?
- 是否需要与 OAuth2“舞蹈”(通过事件)进行交互,还是仅用于调试和响应/重定向自定义?
【问题讨论】:
标签: c# asp.net-core jwt openid-connect jwt-auth