我正在构建一个API,以支持公司内其他应用程序团队的用户配置。我对自定义政策有很好的了解,并查看了WingTipGames中的邀请流程,但是鉴于示例应用程序提供的功能非常丰富,有时很难遵循。我希望能对我可以忽略哪些功能以及支持用例所需的功能进行一些澄清。
用例:
我的API的CreateUser
方法使用ADGraph在B2C中创建用户,然后应生成邀请链接,该邀请链接包括带有用户电子邮件地址的签名JWT,最后将链接通过电子邮件发送给收件人。新用户将单击该链接,该链接应将其直接重定向到邀请策略以重置其密码。
需要澄清:
我正在为邀请链接的简单生成而苦苦挣扎。对于我的API,示例中显示的内容似乎过于复杂。总的来说,我对OIDC设置感到困惑,因为当接收者单击邀请链接时,我的API本身(虽然单独要求调用者进行身份验证)根本不涉及。由于这是一个API而不是MVC应用程序,我想知道与WingTipGames中的邀请流程相比,该流程是否可以简化。
ChallengeAsync
方法中调用Invitation\Create
?大概这就是为什么我们随后进入OnRedirectToIdentityProvider
事件的原因。挑战是什么被拦截并转化为邀请链接吗? WingTipCommon
中的类在这里相关吗?即AspnetCore.Authentication.OpenIdConnect扩展,处理程序和中间件。询问是因为用户永远不要响应单击邀请链接而到达API,所以也许不需要多余的管道。 skipCorrelation
和XSRF处理吗?对于从样本中提取什么以及为支持我的用例而忽略什么的任何其他一般性建议,将受到赞赏。
谢谢 标记
答案 0 :(得分:1)
Wingtip Games应用程序实现以下邀请流程:
我更喜欢并推荐邀请的第一个流程,因为应用程序端点可以在运行邀请策略之前实现邀请逻辑(例如,应用程序端点可以验证邀请的有效期,如果无效,那么它可以显示错误消息)以及邀请策略运行后(例如,应用程序端点可以显示成功消息)。
要回答您的特定问题:
为什么在
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的内置检查。