0

我们使用他们的电子邮件地址创建用户。我们向每个用户发送电子邮件,其中包含更改密码 api 的链接changePasswordId。当用户单击链接时,他将被重定向到更改密码屏幕,在那里他可以设置密码并访问应用程序。这行得通。

但是,现在我们希望允许用户在收到邀请/验证电子邮件后使用他们的社交 Idps 进行注册。在这部分看不到任何 fusionauth 文档。

问题如下

  1. 如何让用户在验证他们的电子邮件时选择他们的社交 Idp?
  2. 一个用户可以在 FusionAuth 中为一个应用程序使用不同的 Idps 进行多次登录吗?
  3. 是否有任何链接 api 将所有外部用户帐户与其 fusionauth 用户帐户链接?

我们期望的流程是:

 Invite User ->  User clicks link -> User will be presented with set 
 password and social logins-> User chooses google -> Google
 authenticates user and returns token back to fusion auth -> fusion
 auth links user's google account with already created (invited) user
 account. -> Next time user logs in with google account -> Fusion auth
 identifies the user and allows him to access the application.

更新: 让我试着解释一下我们的情况和需求,而不是关注密码设置任务:

我们需要在自定义学校域上设置与基于谷歌的教育帐户相关联的新用户。教师和学生可能有这样的地址first.last@middle.school.com :我们需要从 Google Classroom 获取班级名册,通过我们的 API 在我们的后端为每个学生初始化帐户,该 API 还为每个学生创建 FusionAuth 用户和应用程序注册。

学校通常不希望孩子们在供应商网站上设置密码。当我们向新的学生群发送帐户确认/验证电子邮件时,理想情况下,他们会被引导到该域的批准和配置方法(可能是 Google、Microsoft、其他 SAML 或密码)。如果在学生提供她的邀请电子邮件地址后我们无法选择显示的确认方法,那么我们可以在同一屏幕上显示多个确认选项,让老师指导学生做出正确的选择。

但总而言之,我们需要避免在学校要求时要求设置密码并支持受邀社交帐户的确认。

4

1 回答 1

0

如果我正确理解您的用例,您想要的是将“使用 Google 登录按钮”添加到设置密码工作流程。这与电子邮件验证工作流程不同,因此,如果您正在寻找一种在电子邮件验证期间使用其社交资料登录用户的方法,那就完全不同了。事实上,我不认为这是一个用例,因为在用户验证了他们的电子邮件后,他们需要再次登录,他们可以使用他们的社交资料来做到这一点。

不幸的是,FusionAuth 不完全支持允许某人使用社交登录来使用设置密码工作流程的能力。尽管在 FusionAuth 中使用电子邮件模板和主题编辑器可能是可行的。我还没有测试过,但你可以试试看它是否有效。

您要做的是传入一个 URL 参数以在设置密码工作流程期间显示社交登录按钮。这将是您可以在设置密码的电子邮件模板中执行的操作,如下所示:

Click this link to setup your password:
<a href="https://example.com/password/change/${changePasswordId}?showSocial=true">
Setup Password
</a>

然后,使用 FusionAuth 中的 Theme 编辑器,您将添加一些代码来显示这样的按钮(该??部分是在缺少参数时处理):

[#if showSocial?? && showSocial]
  show social buttons here
[/#if]

您可以尝试一下,看看它是否适用于您的用例。如果它不起作用,您可以随时在我们的 GitHub 问题跟踪器上为此打开一个功能请求,我们可以查看它是否收到足够的支持以进入路线图。您也可以聘请 FusionAuth 专业服务来为您构建此功能。

对于您的其他问题,您可以根据需要为单个用户使用外部 IdP 进行多次登录。用户的电子邮件地址是唯一的。

我不确定“链接 api”是什么意思,但如果用户使用外部 IdP 登录,他们来自这些外部提供商的令牌将存储在用户对象中。您可以查找这些值,然后使用其 access_tokens 调用第三方 API。

2019 年 8 月 27 日更新

是的。社交登录按钮确实需要所有 OAuth 参数,因此此解决方案将不起作用,因为这些参数不是设置密码工作流程的一部分。

我想我对这实际上是如何工作的以及这是否是 FusionAuth 应该处理的工作流感到困惑。社交登录通常不用于帐户验证。它们通常用于创建帐户。例如,您可以在学生创建帐户之前将其发送到 FusionAuth,他们使用 Google 课堂帐户登录,然后他们就有一个 FusionAuth 帐户。学生在创建帐户后是否有任何理由可以登录?这本质上不是一回事吗?

你能做一些事情吗,在 FusionAuth 中创建在 Google Classroom 中拥有帐户的学生,并使用随机生成的 32 个字符密码(出于安全考虑),因为无论如何他们都将使用 Google 登录。然后,您可以向他们发送带有标准登录链接的电子邮件。

对于使用用户名和密码直接登录 FusionAuth 的学生,请向他们发送一封设置密码电子邮件。这将让他们选择自己的密码。

在账户关联方面,FusionAuth 会根据邮箱地址(实际上是唯一的登录标识)自动关联账户。因此,您无需调用任何额外的 API 即可将社交登录名与用户相关联。

我可能仍然没有清楚地理解用例,所以请随时使用我们网站上的表格直接与我们联系。我们可能需要设置一个网络会议来详细讨论您的需求。

于 2019-08-26T16:05:43.590 回答