在Salesforce中将Azure AD B2C配置为身份验证提供程序

在Salesforce中将Azure AD B2C配置为身份验证提供程序,salesforce,openid-connect,azure-ad-b2c,Salesforce,Openid Connect,Azure Ad B2c,我正在尝试将Azure AD B2C配置为Salesforce的身份验证提供商。我按照中的说明操作(而不是谷歌使用Azure广告B2C)。 当我单击仅测试初始化URL时,我得到以下错误 我的B2C设置非常基本。我只有一个电子邮件提供商和一个开箱即用的注册策略 任何帮助都将不胜感激 您是否能够使用curl在终端中测试此登录端点,以确保它返回令牌 curl -v https://<Azure login endpoint> -d "grant_type=password" -d "

我正在尝试将Azure AD B2C配置为Salesforce的身份验证提供商。我按照中的说明操作(而不是谷歌使用Azure广告B2C)。

当我单击仅测试初始化URL时,我得到以下错误

我的B2C设置非常基本。我只有一个电子邮件提供商和一个开箱即用的注册策略


任何帮助都将不胜感激

您是否能够使用curl在终端中测试此登录端点,以确保它返回令牌

curl -v https://<Azure login endpoint> -d "grant_type=password"  -d "username=user@login.demo" -d "password=password"
curl-v https://-d“授权类型=密码”-d“用户名=user@login.demo-d“password=password”

您可能需要为Azure的curl命令添加其他参数(可能添加客户端id和客户端机密?

您是否能够使用curl在终端中测试此登录端点,以确保它返回令牌

curl -v https://<Azure login endpoint> -d "grant_type=password"  -d "username=user@login.demo" -d "password=password"
curl-v https://-d“授权类型=密码”-d“用户名=user@login.demo-d“password=password”

您可能需要为Azure的curl命令添加其他参数(可能添加客户id和客户机密?

我来晚了,但我想在这里发布,以防其他人可以使用此信息。我们按照以下步骤使用普通自定义策略返回JWT令牌。请注意创建Azure AD B2C应用程序下的步骤4-5和配置Salesforce Auth.Provider下的步骤8,这些步骤将我将从Azure AD B2C返回访问令牌

创建Azure广告B2C应用程序
  • 登录到您希望连接到的Azure AD B2C实例
  • 转到应用程序。单击添加
  • 添加为回复URL。单击创建
  • 选择刚创建的新应用程序。保存应用程序ID
  • 单击已发布范围。将读取添加为范围。单击保存
  • 保存全范围值
  • 单击API访问。单击+添加。在选择API下,选择应用程序的名称。在选择作用域下,确保选择了读取和用户模拟
  • 单击确定。从左侧导航选择关键点。单击+生成关键点。单击保存
  • 检查生成的应用程序密钥的值。如果它包含“/”、“?”、“&”或“%”(可能有更多无效字符),请删除生成的密钥并重复步骤8和9,直到生成有效密钥。保存有效密钥
  • 配置Salesforce验证提供程序
  • 登录Salesforce。转到设置。在快速查找框中,键入身份验证。选择身份验证提供商
  • 单击新建
  • 在提供商类型下,选择打开ID连接
  • 添加一个信息性的名称。这将作为登录时的选项显示给用户。Salesforce将生成URL后缀
  • 将“创建Azure AD B2C应用程序”的步骤4中的应用程序ID放入消费者密钥中。将“创建Azure AD B2C应用程序”的步骤9中的应用程序密钥放入消费者机密
  • 检索要与之集成的Azure AD B2C自定义策略的OpenID连接发现终结点。此发现终结点可在https://{tenant id}.b2clogin.com/{tenant id}.onmicrosoft.com/v2.0/.众所周知的/OpenID配置?p={Policy id}找到
  • 在Salesforce中将discovery端点中的authorization_endpoint字段用作授权端点URL。在Salesforce中将discovery端点中的token_endpoint字段用作令牌端点URL。在Salesforce中将discovery端点中的issuer字段用作令牌颁发者
  • 将“创建Azure AD B2C应用程序”第6步中的完整范围值放置在默认范围中。在末尾添加“read”。(最终值应如下所示:https://{tenant id}.onmicrosoft.com/{Application name}/read openid)
  • 对于注册处理程序,请按照以下说明执行步骤11: a、 注意,如果链接发生更改,您可以使用此GitHub存储库中的代码创建新的注册处理程序:。您可能需要在prepareUserData方法中添加u.CompanyName='CompanyName'
  • 暂停此处,我们将从令牌颁发者返回
  • 设置虚拟用户信息终结点
  • Salesforce需要用户信息终结点。Azure AD B2C不提供用户信息终结点。您可以使用此GitHub存储库中的代码创建用户信息终结点的版本:
  • 此代码将只返回用户令牌上的声明。我们决定修改代码以在Azure函数中运行
  • 无论您的解决方案是什么,最终都应该有一个REST端点。将该REST端点放在Salesforce中Auth.Provider的令牌颁发者字段中
  • 单击保存
  • 授权Azure AD B2C应用程序中的回调URL
  • 单击在上述步骤中配置的身份验证提供程序
  • Salesforce配置下,保存单次注销URL
  • 展开社区并保存要在其中启用SSO的社区的回调URL
  • 返回Azure AD B2C。导航到应用程序注册(预览)。单击所有应用程序
  • 选择在“创建Azure AD B2C应用程序”中创建的应用程序。单击验证
  • 单击添加URI。添加步骤3中的回调URL。使用单个注销URL更新注销URL