asp.net Openiddict与2FA/MFA使用代码流与用户名和密码?

tez616oj  于 5个月前  发布在  .NET
关注(0)|答案(1)|浏览(61)

多年来一直使用openiddict,使用密码流,用户只需传递用户名和密码,这很完美!但似乎我们现在需要在用户基础上支持2Fa/MFA。我们希望他们仍然输入用户名和密码,但之后“也许”输入2FA的代码。
我做了一些谷歌搜索,我相信它是推荐使用代码流来实现2FA功能,但我很困惑,我必须移动所有我现有的“用户名和密码”功能,目前坐在Exchange方法到Authorize方法?我发现这个答案建议代码流https://stackoverflow.com/a/38244159/2736022,但没有一个例子链接似乎现在工作.
我也没有使用内置的aspnet模板,我使用Angular SPA来做到这一点,目前使用的是承载令牌,尽管我希望可以选择使用Cookie或承载令牌(我们有一个离线应用程序,需要承载令牌功能)。
有没有人有一个类似的例子,他们可以分享我的需求,或指出我需要的方向?
在查看Authorize方法时,我可以看到您可以在请求中包含额外的参数,并使用request.HasParameter(Parameters.Username)request.HasParameter(Parameters.Password)检查它们,但调用该方法的正确方法是什么?
任何帮助将不胜感激

zvms9eto

zvms9eto1#

我已经做了一些谷歌搜索,我相信它是推荐使用代码流来实现2FA功能,但我感到困惑,我必须移动我所有现有的“用户名和密码”功能,目前坐在Exchange方法到Authorize方法?
否:授权端点(通常在代码中具体化为Authorize MVC操作)是一个用户交互端点,而不是一个API端点:它是处理用户登录和同意表单等事情的地方。一旦确定要返回一个包含授权代码的肯定授权响应,就调用return SignIn(principal, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme)让OpenIddict为您创建响应。
如果你想继续使用资源所有者密码凭证授权,你仍然需要实现一个Exchange操作,你需要调整它来支持代码流(通常,通过在授权请求期间返回的授权代码解析的身份)。
要确定Exchange端点接收的令牌请求是客户端凭据还是授权代码授予类型,可以使用request.IsClientCredentialsGrantType()request.IsAuthorizationCodeGrantType()扩展。
代码流示例请参见https://github.com/openiddict/openiddict-samples/tree/dev/samples/Velusia/Velusia.Server

相关问题