【问题标题】:Azure B2C (IEF/Custom Policy) - State parameterAzure B2C(IEF/自定义策略)- 状态参数
【发布时间】:2020-05-27 06:35:09
【问题描述】:

使用注册时,我有以下登录/注册流程:

  1. 显示带有注册屏幕的用户,允许他们输入电子邮件/密码/姓名
  2. 验证输入,然后发送电子邮件(rest api)并在 b2c 自定义扩展属性中设置验证属性

用户随后会收到带有验证链接的电子邮件

  1. 用户点击电子邮件中的链接并被发送到新的用户旅程以进行回程
  2. 新用户旅程从查询字符串中获取参数(电子邮件 + 验证码)
  3. B2C 验证验证码 + 有效期
  4. 如果用户已通过验证,则通过自定义扩展属性将其设置为已验证,然后发送到 (ASP.NET MVC) 应用程序。
  5. 这就是我卡住的地方 - B2C 正在将 jwt 令牌发送回应用程序,但用户没有“登录”。

我在第 7 步是否遗漏了什么?我的查询字符串中没有“状态”变量,我是否希望以某种方式构建和包含它,以便 B2C 和应用程序可以通信?我在这一点上迷路了。我会发布一些 b2c 政策 xml,但不确定有什么帮助...

编辑:回复 Jas:

这是唯一的方法(使应用程序调用 b2c 以获取身份验证请求)吗?我们有多个应用程序可供用户通过 b2c 注册,因此我希望避免对每个应用程序进行更改。相反,我希望 B2C 可以在帐户验证后告诉应用“此用户正常”。

我之前看过https://github.com/azure-ad-b2c/samples/tree/master/policies/sign-in-with-magic-link(你写的!),但我再次希望我可以避免在我们的每个应用程序中进行这项工作。

这是我尝试传递给应用的 jwt 'id_token' 示例:

id_token

旁注:“id_token”与“id_token_hint”相同吗?谷歌搜索时找不到它们是相同还是不同。

【问题讨论】:

    标签: azure-ad-b2c identity-experience-framework


    【解决方案1】:

    您需要做的是发送电子邮件中的邀请链接作为应用程序的链接,例如https://myapp.com?id_token_hint=value。 然后让您的应用程序帐户控制器向策略发出身份验证请求以完成帐户兑换以及额外的查询参数“id_token_hint=value”。现在可以在您的应用程序 openId 中间件初始化时进行正确的身份验证。

    【讨论】:

    • 感谢您的回复 Jas,我已经更新了我的问题以供澄清。
    • 该示例使用 id_tokem_hint ;) 问题是,如果您不将令牌传递给应用程序来执行身份验证请求,而是像示例一样直接链接到身份验证端点,. NET OpenID 中间件没有为用户初始化会话。因此,您最终会使用令牌进入应用程序,而应用程序会忽略它。你必须像我说的那样做,链接到应用程序,应用程序将 id 令牌提示传递给 B2C 身份验证请求。唯一的额外工作是应用程序中的一个端点,例如 /redeemInvite,它调用 accountController 方法来启动身份验证请求。同时,从传入的 URL 传递 id 令牌提示
    • id 令牌提示本身是在您执行操作时生成的,并通过电子邮件发送。只是不能直接调用 auth 端点,必须通过您的 Web 应用程序传递值。
    • 再次感谢 Jas,让我看看我是否明白我可以在这里做什么。我让 B2C 将令牌(来自我的屏幕截图)传回应用程序,但应用程序无法处理它。因此,如果相反,我的应用程序有一个可以接受令牌的方法(例如 /redeeminvite),我可以使用传递给该方法的令牌作为 'id_token_hint' 的值并发送令牌提示 back到 B2C(通过我的 .net openid 中间件 > accountcontroller.login 或其他任何名称)。然后应用程序将建立一个会话,B2C 将能够从令牌中提取声明并让该人登录?
    • 是的,这是有道理的。示例是生成 id_token_hint 值的内容。将值粘贴在电子邮件链接中,但将其作为参数传递给您的应用程序。然后,该控制器需要调用 accountController 方法,将 id_token_hint 作为额外的查询参数传递给身份验证请求,并使用处理 id_token_hint 的 b2c 策略 ID
    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2019-08-19
    相关资源
    最近更新 更多