代码之家  ›  专栏  ›  技术社区  ›  ewomack

在Okta中实现电子邮件验证

  •  0
  • ewomack  · 技术社区  · 8 年前

    我们正在使用Okta作为IDM提供者,并试图确定如何实现我们目前用于其中一个应用程序的特定用例。以下是当前的应用程序流程:

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

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

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

    上面的场景可以在Okta中通过API调用组合创建吗?基本上,我们是否可以创建一个用户并将其保持为“阶段”状态,直到他们单击验证电子邮件?还是这是一个高度定制的场景?此外,我们没有使用多因素身份验证,因此我们没有将其作为选项。

    非常感谢。

    3 回复  |  直到 8 年前
        1
  •  3
  •   Sohaib Ajmal    8 年前

    您可以使用两个API调用来实现这一点。首先是创建具有凭据的用户,并将url中的激活参数设置为false。这将创建具有凭据的用户,但该用户的状态将被转移。使用用户Id进行第二次调用,即激活用户,并将url中的sendmail查询参数设置为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
    

    如果用户使用电子邮件地址登录,而不是单击激活电子邮件,则会提示用户以相同方式设置安全图像/问题。

        2
  •  3
  •   tony    5 年前

    执行第二次调用/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
    

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

        3
  •  0
  •   Dharman Sebastian    3 年前

    看起来sendEmail参数可能未包含在对lifecycle/activate的调用中。

    生命周期/活动端点名称可能会混淆,它 开始 激活它实际上并不激活用户。使用sendEmail,如果用户收到带有嵌入一次性令牌的链接,则强制进行电子邮件验证。令牌将返回给Okta,通常是单击链接,也可以通过API返回。一旦接收到令牌,用户就被激活。

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