好吧,标题几乎解释了这一切,但这是我想要做的:
我正在开发一个需要支持 JWT 身份验证的 ASP.NET Core 1.0 应用程序。使用 OpenIddict 很容易做到这一点,但 OpenIddict 是那些“在后台神奇地工作”的框架之一。
我想保持 OpenIddict 的简单性,但通过使用 Identity 和它的双因素身份验证功能而不仅仅是用户名/密码登录来改变它的默认行为。
我还没有找到向 OpenIddict 提供自定义登录管理器的方法。有没有人有这方面的经验?
好吧,标题几乎解释了这一切,但这是我想要做的:
我正在开发一个需要支持 JWT 身份验证的 ASP.NET Core 1.0 应用程序。使用 OpenIddict 很容易做到这一点,但 OpenIddict 是那些“在后台神奇地工作”的框架之一。
我想保持 OpenIddict 的简单性,但通过使用 Identity 和它的双因素身份验证功能而不仅仅是用户名/密码登录来改变它的默认行为。
我还没有找到向 OpenIddict 提供自定义登录管理器的方法。有没有人有这方面的经验?
使用 OpenIddict 很容易做到这一点,但 OpenIddict 是那些“在后台神奇地工作”的框架之一。
是的,因为它是为不知道 OAuth2 或 OpenID Connect 如何工作的人设计的,这就是为什么故意隐藏大多数协议细节(因此,为什么处理 OIDC 请求/响应的类是故意隐藏的)不可更换)。
我想保持 OpenIddict 的简单性,但通过使用 Identity 和它的双因素身份验证功能而不仅仅是用户名/密码登录来改变它的默认行为。
如果您觉得这很容易,我假设您正在使用在一堆博客文章中展示的“资源所有者密码凭据授予”(例如http://capesean.co.za/blog/asp-net-5-jwt-tokens /或http://kerryritter.com/authorizing-your-net-core-mvc6-api-requests-with-openiddict-and-identity/ )
不幸的是,这个(简单的)OAuth2 授权与 2 因素身份验证不兼容。
相反,我建议切换到隐式或授权代码之类的交互式流程,这将允许您支持这种情况(因为在这种情况下您负责登录部分)。
有关更多信息,您可以查看此示例。它仅依赖于AccountController
登录步骤的默认 VS 模板附带的模板,并包含一个AuthorizationController
处理授权部分的特殊模板。
2-FA 由 原生支持AccountController
,因此您不应该在您的应用程序中实现任何东西来启用它。