在 Okta 中实现电子邮件验证

Implementing e-mail verification in Okta

我们将 Okta 用作 IDM 提供程序,并试图确定如何实现我们当前用于我们的应用程序之一的特定用例。这是当前的申请流程:

  1. 用户进入网站
  2. 用户输入电子邮件和密码以创建帐户
  3. 一封电子邮件被发送到在第 2 步中输入的地址,其中包含验证 link
  4. 用户点击 link,IDM 系统将其标记为已验证
  5. 用户现在可以使用在第 2 步中输入的凭据登录系统

当我们查看 Okta 用户创建流程时,我们只看到针对以下两个 flows/API 调用发送的电子邮件:1. 创建一个没有凭据或恢复问题的用户; 2. 创建有恢复问题的用户。

所有其他流程(至少是我们知道的流程)创建一个具有凭据的用户并立即激活该用户并允许登录而不发送电子邮件。

可以在 Okta 中结合 API 调用来创建上述场景吗?基本上,我们可以创建一个用户并将其保持为 "staged" 直到他们点击验证电子邮件吗?或者这是一个高度定制的场景?此外,我们没有使用多重身份验证,因此我们没有将其作为一个选项。

谢谢!

您可以使用两个 API 调用来实现此目的。首先是创建具有凭据的用户,并将 url 中的激活参数设置为 false。这将创建具有凭据的用户,但用户的状态将是 STAGED。使用用户 ID 进行第二次调用,即激活用户并将 url 中的 sendEmail 查询参数设置为 true。这将激活用户并将激活电子邮件发送到用户的主要电子邮件地址。

请参阅下面的两个调用。

POST /api/v1/users?activate=false

{
  "profile": {
    "firstName": "{{firstName}}",
    "lastName": "{{lastName}}",
    "email": "{{email}}",
    "login": "{{login}}"
  },
  "credentials": {
    "password" : { "value": "{{password}}$" }
  }
}

将创建状态为 STAGED 的用户。从此调用中获取用户 ID。使用此用户 ID 进行第二次调用。

POST /api/v1/users/{{userId_from_last_call}}/lifecycle/activate?    sendEmail=true

请注意,第二次调用会将用户的状态设置为“活动”,并且还会向用户的电子邮件地址发送激活电子邮件。单击 link 用户将被提示 select 安全图像(如果尚未设置,则提示恢复问题)。

如果用户使用电子邮件地址登录而不是单击激活电子邮件,系统将提示用户以相同的方式设置安全性 image/question。

进行第二次调用 /api/v1/users/{{userId_from_last_call}}/lifecycle/activate 在激活用户之前不验证用户。

我需要的是

1) User creates an account with their email and password

2) Account is staged

3) Verification email is sent with activate link

4) User account only get activated by clicking the link

似乎找不到解决这个简单问题的方法

似乎 sendEmail 参数可能未包含在对 lifecycle/activate 的调用中。

lifecycle/active 端点名称可能令人困惑,它 启动 激活它实际上并没有激活用户。使用 sendEmail if 强制电子邮件验证,其中用户收到带有嵌入式一次性令牌的 link。令牌将返回给 Okta,通常是点击 link,也可以通过 API 返回。一旦收到令牌,用户就会被激活。

使用一次性令牌验证电子邮件地址,流程应该完全按照上面的要求工作。参考:https://developer.okta.com/docs/reference/api/users/#activate-user.