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

时间:2019-03-19 18:51:32

标签: salesforce openid-connect azure-ad-b2c

我正在尝试将Azure AD B2C配置为Salesforce的身份验证提供程序。我按照http://salesforce.vidyard.com/watch/kcgTXQytUb6INIs2g3faKg中的说明进行操作(而不是Google使用Azure AD B2C)。 enter image description here

当我单击仅测试的初始化URL时,出现以下错误

enter image description here

我的B2C设置非常基础。我只有一个电子邮件提供商和一个即用型的登录注册策略。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我参加聚会很晚,但是我想在这里发帖,以防其他人可以使用此信息。我们遵循以下步骤,使用普通的“自定义策略”返回JWT令牌。请注意创建Azure AD B2C应用程序下的步骤4-5和配置Salesforce身份验证下的步骤8。提供商,它们将从Azure AD B2C撤回访问令牌。

创建Azure AD B2C应用程序

  1. 登录到您希望连接的Azure AD B2C实例。
  2. 转到应用。点击 +添加
  3. 添加 https://www.salesforce.com 作为回复URL 。点击创建
  4. 选择刚创建的新应用。保存应用程序ID
  5. 点击发布范围。添加 read 作为范围。点击保存
  6. 保存全范围值
  7. 点击 API访问权限。点击 +添加。在选择API 下,选择应用程序的名称。在选择作用域下,确保选择读取用户假冒
  8. 点击确定。从左侧导航栏中选择。点击 +生成密钥。点击保存
  9. 检查所生成的应用密钥的值。如果它包含“ /”,“?”,“&”或“%”(可能还有更多无效字符),请删除生成的密钥并重复步骤8和9,直到生成有效密钥为止。保存有效密钥。

配置Salesforce身份验证。提供程序

  1. 登录到Salesforce。转到设置。在快速查找框中,键入 Auth 。选择身份验证。提供者
  2. 点击新建
  3. 提供商类型下,选择 Open ID Connect
  4. 添加内容丰富的名称。登录时,这将作为选项显示给用户。Salesforce将生成URL后缀。
  5. 将“创建Azure AD B2C应用程序”的第4步中的应用程序ID 放在消费者密钥中。将“创建Azure AD B2C应用程序”的第9步中的应用程序密钥放在“消费者机密” 中。
  6. 检索要与之集成的Azure AD B2C自定义策略的OpenID Connect发现端点。可以在https:// {tenant-id} .b2clogin.com / {tenant-id} .onmicrosoft.com / v2.0 / .well-known / openid-configuration?p = {policy-id }。
  7. 使用发现端点中的authorization_endpoint字段作为Salesforce中的授权端点URL 。将发现端点中的token_endpoint字段用作Salesforce中的令牌端点URL 。将发现端点中的颁发者字段用作Salesforce中的令牌颁发者
  8. 在“ 默认范围”中,放置“创建Azure AD B2C应用程序”的步骤6中的完整范围值。在末尾添加“ read”。 (最终值应如下所示:https:// {tenant-id} .onmicrosoft.com / {application-name} / read openid)
  9. 对于注册处理程序,请按照以下说明执行步骤11:https://help.salesforce.com/articleView?id=sso_provider_openid_connect.htm&type=5 一种。请注意,以防链接更改。您可以使用以下GitHub存储库中的代码创建新的注册处理程序:https://github.com/salesforceidentity/social-signon-reghandler/blob/master/SocialRegHandler.cls。您可能需要添加u.CompanyName ='CompanyName';在prepareUserData方法中。
  10. 在这里暂停,我们将返回令牌发行人

设置虚拟用户信息端点

  1. Salesforce需要一个用户信息端点。 Azure AD B2C不提供一个。您可以使用此GitHub存储库中的代码创建用户信息端点的版本:https://github.com/azure-ad-b2c/samples/tree/master/policies/user_info
  2. 此代码将仅返回用户令牌上的声明。我们决定修改代码以在Azure函数中运行。
  3. 无论采用哪种解决方案,都应以REST终结点结束。将该REST端点放置在Auth的令牌颁发者字段中。 Salesforce中的提供商。
  4. 点击保存

授权Azure AD B2C应用程序中的回调URL

  1. 单击在上述步骤中配置的身份验证提供程序。
  2. Salesforce配置下,保存单一注销URL
  3. 展开社区,并保存要在其中启用SSO的社区的回调URL
  4. 返回到Azure AD B2C。导航至应用注册(预览)。点击所有应用
  5. 选择在“创建Azure AD B2C应用程序”中创建的应用程序。点击身份验证
  6. 点击添加URI 。在步骤3中添加回调URL 。在步骤2中使用单个注销URL 更新注销URL 。点击保存

答案 1 :(得分:0)

您是否可以使用 curl 在终端中测试此登录终结点,以确保其返回令牌?

curl -v https://<Azure login endpoint> -d "grant_type=password"  -d "username=user@login.demo" -d "password=password"

您可能需要向curl的Azure命令添加其他参数(也许添加客户端ID和客户端密钥?