azure - 通知后端有关新的 Azure AD B2C 用户注册的信息

标签 azure azure-ad-b2c azure-ad-b2c-custom-policy

我希望 Azure AD B2C 能够调用,例如一旦新用户注册,我的后端就会有一个 webhook 或 REST API(目前的用户流程,稍后会自定义策略)。

这怎么可能?我特别需要在注册后立即将用户的对象ID传输到我的后端。我看了API connectors ,但它们仅适用于例如验证。没有用于通知已完成注册的 API 连接器。与文档相反,对象 ID 不会在 "Before creating the user" 上发送。 ,所以我也不能将其用于我的情况。

最佳答案

只有在 Active Directory 上创建用户后才能发送用户对象 ID,因为如果用户不存在,则无法发送 ID。

如果您使用内置流,则可以在“Before sending the token (preview) ”步骤使用 API 连接器,这样您的后端就会在 token 发送给用户之前收到通知。但是,这也会在每次登录或刷新 token 请求时触发请求,这可能是不可取的。要解决此问题,您可以为生成的 token 启用“新用户”声明,并检查发送到后端的请求中是否存在该声明。

正如其他答案中提到的,如果您需要对注册过程进行更多控制,可以使用 Custom Policies定义您自己的注册工作流程并使用技术配置文件发送 objectId,如下所示:

<TechnicalProfile Id="REST-Call">
  <DisplayName>Notify backend about user registration</DisplayName>
  <!-- https://learn.microsoft.com/en-us/azure/active-directory-b2c/restful-technical-profile -->
  <Protocol Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Name="Proprietary"/>
  <Metadata>
    <Item Key="ServiceUrl">https://xxx.azurewebsites.net/api/UserRegistered</Item>
    <Item Key="AuthenticationType">ClientCertificate</Item>
    <Item Key="SendClaimsIn">Body</Item>
    <Item Key="DefaultUserMessageIfRequestFailed">Cannot process your request right now, please try again later.</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="ClientCertificate" StorageReferenceId="B2C_1_BackendClientCertificate"/>
  </CryptographicKeys>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId"/>
    <!-- https://learn.microsoft.com/en-us/azure/active-directory-b2c/claim-resolver-overview#restful-technical-profile -->
    <InputClaim ClaimTypeReferenceId="clientId" DefaultValue="{OIDC:ClientId}" AlwaysUseDefaultValue="true" />
  </InputClaims>
</TechnicalProfile>

然后使用编排步骤调用技术配置文件。

如果您需要帮助设置自定义策略入门包,您可以使用此应用程序生成样板:https://b2ciefsetupapp.azurewebsites.net/或检查其存储库以获取脚本:https://github.com/azure-ad-b2c/Scripts

如果您愿意使用现有后端,您可能需要检查此存储库以了解如何将 API 连接器与现有 WebApp 集成,并使用 Microsoft Graph 从目录添加用户安全组:https://github.com/azure-ad-b2c/api-connector-samples 。但是,存储库似乎使用的是过时版本的 Microsoft.Graph Nuget(4.48.0,当前版本是 5.6.0),可能需要进行一些更改。

您可能还想查看这些示例以使用 Azure Functions 设置 API 连接器 REST API:https://learn.microsoft.com/en-us/azure/active-directory-b2c/api-connector-samples .

关于azure - 通知后端有关新的 Azure AD B2C 用户注册的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76049496/

相关文章:

azure - Azure AD B2C 自定义策略

Azure B2C : KMSI feature does not work with custom policy

azure - 注册期间将 "email"存储在联系信息中 - Azure AD B2C 自定义策略

angular - Angular 和 microsoft msal 的 acquireTokenSilent 失败并显示 AADB2C90077/AADB2C90205

azure - 当用户使用 MFA 时,是否可以使用 MSAL 或任何 Azure API 登录用户而无需交互?

azure-ad-b2c - 密码重置链接 Azure B2C 自定义策略

Azure B2C 注册策略重定向到应用程序后,AngularJS 哈希 # 问题

azure - 添加忘记密码 XML 逻辑的自定义策略出现 XML 错误

c# - 在 Postman 中使用 HTTP PATCH 动词更新数据库表

azure - 如何查看用户有权访问Azure DevOps组织中的哪些项目?