Azure AD B2C - 如何实施自定义注册流程?
Azure AD B2C - how to implement custom sign up process?
这基本上是对我上一个问题的跟进 - . I've implemented an Azure B2C sign up and auth in my web app (.NET Core 2.0) and now I want to add a custom sign up logic with Graph API (as described here - https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet)。
但我对应用程序注册感到困惑。对于 B2C 身份验证,我在 Azure AD B2C -> 应用程序下的门户中创建了一个应用程序。现在,为了使用自定义注册逻辑,我需要在 Portal -> App Registrations -> New Application Registration 下进行另一个应用程序注册(我可以在其中向 Azure AD 授予必要的权限,例如读取和写入目录数据)。
那么,如果我需要授权和自定义 sigh up,我应该如何设置我的应用程序?这样做的正确方法是什么?
为了简单起见,以及关注点的健康分离,我确实会为自定义注册制作一个单独的应用程序。它不一定是一个成熟的应用程序,为主要 B2C 应用程序进行注册的微服务就可以了。
如果您想使用 custom attribute 实现自定义注册流程,您需要按照您在 post 中提到的文档注册两个应用程序。一个应用程序用于与 Azure AD B2C 集成以进行登录,另一个应用程序使用 Azure AD Graph 查询自定义属性。
之后,您可以使用 Azure AD Graph REST 查询相关信息并在 Web 应用程序中处理您自己的业务逻辑。而要查询分机信息,我们只需要像下面这样查询用户信息:
如果您只是想拥有自己的外观和感觉,而不是使用带有您的徽标和其他品牌的默认模板,那么请考虑提供一个用于 UI 自定义的模板:
此外,请参阅类似问题的另一个答案:
Azure AD B2C UI Customization
如果您正在尝试一个完全不同的工作流程,您将需要创建一个自定义策略。
https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-overview-custom
或者如果这不起作用,那么我想您可以只使用 GraphApi,但这是最费力的选项,并且首先完全破坏了使用 B2C 的整个目的。我不推荐这种方法。
更新:
我不会做你想在自定义策略中做的所有事情。将注册分离到它自己的 application/service 中将是一个很好的方法(正如@camsoper 建议的那样),但仅将策略用于创建初始帐户或验证已批准用户所需的最低金额。我从未使用过更改 "accountActive" 属性的策略,但我倾向于在使用 "NewAccount" 属性关闭创建帐户后使用 GraphApi 修改用户配置文件。 Azure 门户中的用户个人资料上有一个 "Block sign in" 设置,可用于限制访问(并且注册应用程序可以在创建帐户后设置默认值),但我不确定这是否对应于"accountActive" 属性(尚未)。
您描述的大部分管理都可以在 Azure 门户中完成,例如更改用户配置文件上的 "Block sign in" 设置可用于限制访问(并且注册应用程序可以设置默认值创建帐户后)。如果门户网站没有提供某些功能,我会把它放到一个单独的应用程序中。避免在自定义管理应用程序中重复功能,而只是将管理员重定向到 "portal.azure.com".
中的用户配置文件
https://portal.azure.com/#blade/Microsoft_AAD_IAM/UserDetailsMenuBlade/Profile/userId/{objectId}
注意:如果管理员可以为其帐户访问多个目录,则该 URL 模板可能会出现一些问题。默认情况下,它将尝试拉出她创建帐户的目录。
这基本上是对我上一个问题的跟进 -
那么,如果我需要授权和自定义 sigh up,我应该如何设置我的应用程序?这样做的正确方法是什么?
为了简单起见,以及关注点的健康分离,我确实会为自定义注册制作一个单独的应用程序。它不一定是一个成熟的应用程序,为主要 B2C 应用程序进行注册的微服务就可以了。
如果您想使用 custom attribute 实现自定义注册流程,您需要按照您在 post 中提到的文档注册两个应用程序。一个应用程序用于与 Azure AD B2C 集成以进行登录,另一个应用程序使用 Azure AD Graph 查询自定义属性。
之后,您可以使用 Azure AD Graph REST 查询相关信息并在 Web 应用程序中处理您自己的业务逻辑。而要查询分机信息,我们只需要像下面这样查询用户信息:
如果您只是想拥有自己的外观和感觉,而不是使用带有您的徽标和其他品牌的默认模板,那么请考虑提供一个用于 UI 自定义的模板:
此外,请参阅类似问题的另一个答案:
Azure AD B2C UI Customization
如果您正在尝试一个完全不同的工作流程,您将需要创建一个自定义策略。
https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-overview-custom
或者如果这不起作用,那么我想您可以只使用 GraphApi,但这是最费力的选项,并且首先完全破坏了使用 B2C 的整个目的。我不推荐这种方法。
更新:
我不会做你想在自定义策略中做的所有事情。将注册分离到它自己的 application/service 中将是一个很好的方法(正如@camsoper 建议的那样),但仅将策略用于创建初始帐户或验证已批准用户所需的最低金额。我从未使用过更改 "accountActive" 属性的策略,但我倾向于在使用 "NewAccount" 属性关闭创建帐户后使用 GraphApi 修改用户配置文件。 Azure 门户中的用户个人资料上有一个 "Block sign in" 设置,可用于限制访问(并且注册应用程序可以在创建帐户后设置默认值),但我不确定这是否对应于"accountActive" 属性(尚未)。
您描述的大部分管理都可以在 Azure 门户中完成,例如更改用户配置文件上的 "Block sign in" 设置可用于限制访问(并且注册应用程序可以设置默认值创建帐户后)。如果门户网站没有提供某些功能,我会把它放到一个单独的应用程序中。避免在自定义管理应用程序中重复功能,而只是将管理员重定向到 "portal.azure.com".
中的用户配置文件https://portal.azure.com/#blade/Microsoft_AAD_IAM/UserDetailsMenuBlade/Profile/userId/{objectId}
注意:如果管理员可以为其帐户访问多个目录,则该 URL 模板可能会出现一些问题。默认情况下,它将尝试拉出她创建帐户的目录。