Azure B2C(IEF/Custom 策略)- 状态参数

Azure B2C (IEF/Custom Policy) - State parameter

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

  1. 向用户展示注册屏幕,允许他们输入 email/password/name
  2. 验证输入,然后发送电子邮件(rest api)并在 b2c 自定义扩展属性中设置验证属性

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

  1. 用户从电子邮件中点击 link 并被发送到 return 行程的新用户旅程
  2. 新用户旅程从查询字符串中获取参数(邮箱+验证码)
  3. B2C验证验证码+有效期
  4. 如果用户已通过验证,他们将通过自定义扩展属性设置为已验证,然后发送到 (ASP.NET MVC) 应用程序。
  5. 这是我卡住的地方 - B2C 将 jwt 令牌发送回应用程序,但用户没有得到 'signed-in'.

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

编辑:回复贾斯:

这是唯一的方法吗(让应用程序调用 b2c 来获取授权请求)?我们有多个应用程序,用户可以使用这些应用程序通过 b2c 进行注册,所以我希望避免对每个应用程序进行更改。相反,我希望 B2C 可以在帐户验证后告诉应用 "this user is ok".

我之前看过 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' 相同吗?谷歌搜索时我找不到它们是否相同。

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