【问题标题】:How to create a user from a id_token with Spring?如何使用 Spring 从 id_token 创建用户?
【发布时间】:2020-03-08 18:48:02
【问题描述】:

我正在构建一个后端带有弹簧的 SPA。我正在使用 Google 登录,其中大部分已经在工作:在前端获取带有隐式流的 id_token,然后我将其发送并在后端验证它。

我想让用户拥有角色并在本地进行管理(因此,不要在 oidc 提供程序中添加信息)。在春季从 id_token 到拥有经过身份验证的用户有哪些选择?我没有找到任何手动执行该链接的示例(id_token-spring_sec_user)。

我已经检查了几个来源,例如 SpringOne https://www.youtube.com/watch?v=WhrOCurxFWU 上的 Spring Security 5 演示文稿、几个 SO 问题以及 okta 和 auth0 的博客上的帖子,但我仍然缺少链接。

【问题讨论】:

    标签: rest spring-boot spring-security openid-connect spring-security-oauth2


    【解决方案1】:

    您必须创建自己的(应用程序)特定角色。

    使用这些步骤:

    1. 从 Google 获得身份验证
    2. 从谷歌访问个人资料部分(用户名、姓名等)
    3. 使用您自己的用户表来存储此信息
    4. 在您自己的系统中创建管理 API,并将您的应用特定角色分配给用户。
    5. 当您再次登录时,您将根据 google 登录名/密码和特定于您的应用程序的角色进行身份验证。

    【讨论】:

    • 很公平,这就是我最终所做的。你有没有看到任何关于如何做到这一点的博客或例子?当我没有找到任何东西时,这让我怀疑。
    • 没有找到任何教程。但是,这应该很容易,因为您只会在首次登录时为用户分配默认角色。稍后管理员(使用管理员 API)可以更改(添加新角色)给用户。您需要做的就是实现自己的身份验证提供程序。
    【解决方案2】:

    使用 id_token

    创建帐户或会话

    检查用户是否已经在您的用户数据库中。如果是这样,为用户建立一个经过身份验证的会话。如果用户尚未在您的用户数据库中,请使用 ID 令牌有效负载中的信息创建具有默认角色的新用户记录,并为用户建立会话。当您在应用中检测到新创建的用户时,您可以提示用户提供您需要的任何其他个人资料信息。

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 2017-08-13
      相关资源
      最近更新 更多