带有登录升级和 MFA 的 identityServer4

标签 identityserver4 identityserver3 two-factor-authentication multi-factor-authentication

在我的一个项目中,我需要实现登录升级。这意味着用户可以使用简单的用户名和密码登录应用程序,以获得对网站及其背后 API 的一些只读访问权限。

如果用户想要执行任何像“写入/更新”这样的敏感数据操作,他需要通过第二个因素(通过 SMS 代码)进行身份验证。

二次登录的有效期最长为10分钟,如果用户在10分钟内未访问网站,他将自动退出二次登录,但仍保持一次登录状态。

identityserver4 可以开箱即用地支持这个 szenario 吗?还是我需要自己实现它?

这是我的解决方案建议:

  • 对于单因素登录,identityserver 提供单因素作用域,客户端需要了解该作用域。它提供了一个访问 token ,其范围也有限。
  • 当客户端应用程序需要双因素范围时,它再次调用身份服务器,用户必须提供第二因素身份验证。因此,将具有第二因素作用域的新 token 发送回客户端。使用此 token 客户端可以调用需要二次验证的 API 方法。
  • 第二因素身份验证 token 的有效期为 10 分钟
  • 10 分钟后 token 无效,但一个因素 token 仍然有效,因为它有很长的生命周期。

  • 问题 :

    - IdentityServer4 可以提供开箱即用的登录升级吗?如果不是,有哪些替代解决方案?

    你对我的解决方案有什么建议?

    提前致谢

    最佳答案

    您在要点中所写的内容基本上是我认为它在 IdentityServer4 中的实现方式。它只是设置两个不同的范围并为同一用户发布两个单独的 token 。第一个范围 'readonly',lifetime=24h,只能被应用程序 api 中的安全操作接受,第二个范围是“full”,所有操作都可以接受生命周期 = 10 分钟。没什么大问题,使用基本的 IdentityServer4 应该是完全可行的。但是,您必须 RT(F)M 并在 IdentityServer4 配置中配置范围、客户端、 token 等。而且,您必须在应用程序的后端 api 实现中实现两个 token 访问策略,当然客户端应用程序必须小心他们获得哪个 token 以及他们将哪个 token 用于哪个后端调用......但所有其中或多或少是显而易见的(从这些要点来看,你似乎明白这一点)所以我不太明白你说“开箱即用”想要什么,或者你担心什么IdentityServer4 端的支持条款..

    关于带有登录升级和 MFA 的 identityServer4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55165917/

    相关文章:

    azure - 使用 Azure AD B2C 自定义身份提供程序 (OpenID Connect) 映射声明

    python - Web2Py:自定义两步验证表单

    .net-core - 如何为 IdentityServer4 配置登录 UI?

    c# - IdentityServer4 刷新 token : How to determine expiration time?

    asp.net - IdentityServer3 仅在移动设备上登录时持续重定向

    c# - 为外部身份验证创建部分登录 cookie

    api - 使用 React 和 php api 进行两因素注册

    visual-studio-code - 2FA 与 VS 代码远程 SSH?

    c# - 如何将 Json 格式化程序添加到 MvcCore?

    c# - IdentityServer4 Introspection Endpoint API 使用无效的散列算法