Azure Active Directory B2C用户注册无需重定向(非交互式)

5
我正在开发一个本地的iOS应用程序,并希望使用AADB2C作为身份提供者,让用户进行登录、注册、重置密码等操作。
我无法找到一种方法,让用户在不重定向到(可自定义但仍然是)Microsoft网站的情况下,使用AADB2C(或常规AAD)进行注册。明确一点:我想让客户从本地iOS表单上创建AAD用户账户,而不需要将他们重定向到网站,最好通过REST请求实现。(就像这里“创建消费者用户账户”所示:https://learn.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet

使用Azure AD Graph REST为Azure AD B2C租户创建用户时遇到了什么问题? - Fei Xue - MSFT
1个回答

8

您能从iOS应用程序创建用户吗?是的,可以使用Graph API,根据您展示的文章。目前只能创建本地账户。

然而,您需要非常小心地处理它,因为当前创建用户的能力需要Directory.ReadWrite.All权限,这也允许所有其他操作。您不应该将具有这些权限的应用程序的客户端ID和客户端密钥放在iOS应用程序中。相反,您需要创建一个后端服务,为iOS应用程序公开API以调用用户创建。

然而,更重要的是,您将无法在没有重定向的情况下登录用户(这就是B2C注册策略所做的)。为了在没有重定向的情况下从自己的UI中执行此操作,您需要Azure AD B2C支持资源所有者密码凭据流,以便在创建用户后使用此流来登录并获取令牌。
注意:您还需要禁用电子邮件验证,以便在用户创建后立即利用用户帐户。您可以通过页面UI自定义>本地帐户注册页面>电子邮件地址>需要验证>否在注册策略或注册/登录策略中设置此选项。
最后,作为FYI,Azure AD B2C中有一个功能正在开发中:客户拥有的域, 它与UI定制配对使用,可以让您拥有自己的注册/登录页面,并拥有自己的URL,没有Microsoft的痕迹供您的终端用户查看。

非常感谢,这解决了我的问题。使用“常规”AD能否实现我想要的功能?它支持“资源所有者密码凭据流”,对吧? - bismuth
“常规” Azure AD确实支持资源所有者密码凭据流。但请记住,这种方式可能会很脆弱或昂贵,因为有很多事情可能会导致您的代码出现问题或变得复杂,例如如果多因素身份验证启动,如果用户的密码过期并需要更新,如果某些身份保护机制启动。所有这些事情都由Microsoft页面处理。 - Saca
如果您正在为您不拥有的目录(无论是您的IT部门拥有还是您正在进行多租户应用程序)进行此操作,则这尤其相关。 - Saca
很好的答案,包含了实现“纯REST”集成所需的一切(还有后端服务的提示,因为某些服务被CORS阻止而需要代理 - (例如刷新令牌))。 - Florian D.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接