authentication - 使用电话号码功能登录

标签 authentication keycloak openid-connect vert.x one-time-password

目前我正在使用电话号码进行功能登录,用户将输入他们的电话号码,服务器将发送包含 OTP 的短信。

我已经研究了很多天以寻求与 Keycloak 集成的解决方案,但仍然坚持下去。我看到我们需要使用身份验证器 SPI,扩展 keycloak 并实现我们想要的代码。

我也考虑过使用其他第三方来处理 sms 和 otp 的东西(如 Firebase),然后将使用 firebase token 来交换 keycloak token ,但 Keycloak 中不支持 firebase 提供程序,因此无法执行此流程

我只是想问有没有其他方法可以在不扩展 Keycloak 的情况下实现此功能?或者我们可以通过API获取keycloak token 但没有密码

最佳答案

我可以想象围绕 keycloak 的小解决方案,它们一起可以得到你想要的。将尝试解释:)

  • 想象一下电话号码是 keycloak 中的用户登录名。
  • 想象一下密码是系统生成的,就像编码的电话号码+盐;基本上哈希算法知道密码是什么,用户不知道。
  • 您使用第三方库,它验证用户手机号码和用户输入的短信,并且可以正常工作。
  • 您在 keycloak 中创建系统用户,在 application.properties 中保存密码编码,为他分配一些管理角色,例如创建用户、查询用户,以及管理用户所需的其他角​​色。

  • 现在,工作流程是:
  • 用户输入手机号码123,短信正在发送
  • 用户验证短信,
    你知道用户号 123,你生成密码
    hash1(hash2(123+salt))(见第2点)
  • 使用系统用户登录keycloak,获取系统用户的accessToken
  • 使用 accessToken 检查用户是否存在,如果不存在,使用密码 hash(..) 创建用户 123,分配默认角色,组
  • 从系统用户注销
  • 使用用户 123 和密码 hash(..) 登录,加载用户 accessToken,构建用户配置文件,放入 SecurityContextHolder.getContext()

  • 如果你让所有的小部分工作,应该一起工作。

    或者如果我错了就忽略我!祝你好运 !

    关于authentication - 使用电话号码功能登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58418492/

    相关文章:

    kotlin - 我如何在其中传递 onClick 参数?

    angularjs - 从 JWT token 检索 Azure 组详细信息

    azure - 具有 GKE 的外部 OIDC 提供商

    oauth-2.0 - 如何使用 OIDC/OAuth 保护 API

    spring-boot - 我们可以为用户组/不同用户配置 Keycloak 多密码策略到单个领域吗?

    azure-active-directory - Azure AD (Active Directory) 中的 Multi-Tenancy 应用因 AADSTS50020 而失败

    PHP/MySQL : Login form doesn't work

    php - 使用 OAuth2 在 laravel 中自定义用户提供程序

    azure - 如何在 Azure 上部署 keycloak docker 容器?

    h2 - 如何在 H2 中删除数据库?