需要澄清WingTipGames中的邀请流程

时间:2019-03-27 10:03:29

标签: azure-ad-b2c

我正在构建一个API,以支持公司内其他应用程序团队的用户配置。我对自定义政策有很好的了解,并查看了WingTipGames中的邀请流程,但是鉴于示例应用程序提供的功能非常丰富,有时很难遵循。我希望能对我可以忽略哪些功能以及支持用例所需的功能进行一些澄清。

用例:

我的API的CreateUser方法使用ADGraph在B2C中创建用户,然后应生成邀请链接,该邀请链接包括带有用户电子邮件地址的签名JWT,最后将链接通过电子邮件发送给收件人。新用户将单击该链接,该链接应将其直接重定向到邀请策略以重置其密码。

需要澄清:

我正在为邀请链接的简单生成而苦苦挣扎。对于我的API,示例中显示的内容似乎过于复杂。总的来说,我对OIDC设置感到困惑,因为当接收者单击邀请链接时,我的API本身(虽然单独要求调用者进行身份验证)根本不涉及。由于这是一个API而不是MVC应用程序,我想知道与WingTipGames中的邀请流程相比,该流程是否可以简化。

  • 为什么在ChallengeAsync方法中调用Invitation\Create?大概这就是为什么我们随后进入OnRedirectToIdentityProvider事件的原因。挑战是什么被拦截并转化为邀请链接吗?
  • WingTipCommon中的类在这里相关吗?即AspnetCore.Authentication.OpenIdConnect扩展,处理程序和中间件。询问是因为用户永远不要响应单击邀请链接而到达API,所以也许不需要多余的管道。
  • 单击兑换邀请链接时,用户将始终处于新的浏览器和会话中,并将直接重定向到该策略(如果我理解正确的话)。我还需要担心skipCorrelation和XSRF处理吗?

对于从样本中提取什么以及为支持我的用例而忽略什么的任何其他一般性建议,将受到赞赏。

谢谢 标记

1 个答案:

答案 0 :(得分:1)

Wingtip Games应用程序实现以下邀请流程:

  1. An invitation link to an application endpoint。该邀请链接包含被邀请用户的电子邮件地址,邀请到期和基于HMAC的签名。打开邀请链接时,the application endpoint将验证基于HMAC的签名和邀请到期,如果它们有效,则它将被邀请的用户重定向到策略端点。此策略重定向包含a signed JWT以及受邀请用户的电子邮件地址。
  2. An invitation link to the policy endpoint。此邀请链接包含a signed JWT,其中包含被邀请用户的电子邮件地址。

我更喜欢并推荐邀请的第一个流程,因为应用程序端点可以在运行邀请策略之前实现邀请逻辑(例如,应用程序端点可以验证邀请的有效期,如果无效,那么它可以显示错误消息)以及邀请策略运行后(例如,应用程序端点可以显示成功消息)。

要回答您的特定问题:

  

为什么在ChallengeAsync方法中调用Invitation\Create

这是邀请的第二个流程。这样称呼the authentication middleware can generate the invitation link and send the invitation message。如此实现,以便应用程序逻辑不必知道邀请链接所需的应用程序标识符,策略标识符或重定向URI。

  

WingTipCommon中的类在这里相关吗?

它们用于支持第二条邀请流程。请参阅下一个答案。

  

我还需要担心skipCorrelation和XSRF处理吗?

这是在第二个邀请流程中实现的。作为邀请策略的结果,Azure AD B2C向客户端应用程序发出身份验证响应,该身份验证响应由身份验证中间件处理。由于身份验证中间件不会调用邀请策略(即,它是由邀请链接调用的),因此,the authentication middleware must be configured会禁用correlation of an authentication request with an authentication response的内置检查。