1

一些背景资料:Azure的AD SSO多租户应用程序/ AD FS声明提供问题

我公司(充当SP)当前处理SSO与我们的联盟伙伴方(IdP的)通过AD FS 2.0。每个合作伙伴都设置为声明提供程序,并创建用于转换将发送到我们的Web应用程序的传入声明的规则。

认证之后含有权利要求中的令牌被发布到其中的权利要求变换和由OWIN中间件先于帐户查找/创建发送到我们的web应用程序的URL(例如https://companyname.ca/externalsignin.aspx)和处理我们的STS端点(例如https://sts.companyname.ca/adfs/ls)。

这一切都完美。现在我们负责将Azure AD SSO集成到组合中,以帮助简化入职流程。

我已经尽可能在Azure中创建一个新目录并在其中创建一个新应用程序。我已将该应用程序标记为多租户,并将回复网址设置为“https://sts.companyname.ca/adfs/ls”。在服务器上的AD FS 2.0客户端中,我创建了一个名为“AzureAD”的新声明提供程序,并从Azure控制台上的应用程序的端点部分导入了metadataurl。使用我们的Tenant的电子邮件测试日志非常完美。从另一租户组织电子邮件进行测试时,问题在于,认证失败,错误请求消息:

Bad Request Image

一些研究,看来这是由于登录表单被构建login.microsoftonline后。 com/tenantid,而login.microsoftonline.com/common应该用于多租户应用程序。因此,我重新从https://login.microsoftonline.com/common/federationmetadata/2007-06/federationmetadata.xml重新导入了元数据并进行了更新。 enter image description here

现在我实际上可以在使用另一个租户组织帐户登录时看到同意请求,但是在身份验证后,sts.companyname.ca/adfs/ls发布失败,因为该令牌已针对“sts.windows .net/0000-000000-000000-0000“,但AD FS中的声明提供程序由sts.windows.net/{tenantid}占位符标识。

我不知道如何使这个工作只有一个单一的Azure声明提供程序的模板化的终点(我也只能添加1个天蓝色的声明提供程序,因为他们都使用相同的签名证书)。

任何帮助克服这个障碍将不胜感激。

回答

2

这不会因为在Azure上广告的发布与ADFS约束不允许使用相同的签名密钥多重索赔提供商的信任令牌(相同的签名密钥,但不同的租户发行人)一个阻抗不匹配的工作。

做到这一点的方法是下列之一

  1. 使用Azure的AD B2B邀请来自一个或多个Azure的AD租户客人到您的Azure的AD租户,然后挂钩ADFS到租客为一体CP信任。
  2. 在ADFS 2016中,我们还要求将每个Azure AD租户视为不同的CP信任关系,并使用不同的关于声明接受/增强的政策/规则。为此,我们现在允许每个Azure AD租户建模为唯一的CP信任。

希望能回答你的问题。

谢谢 // Sam(@MrADFS)

+0

谢谢。 Azure AD B2B看起来可能是要走的路。看来邀请外部用户的过程依赖于导入最多2000行的csv文件。这是否要求我们每次邀请新用户加入合作伙伴租户,以便他们能够访问我们的资源?我们的合作伙伴是学校董事会,其中一些拥有100,000多名用户,需要随时添加新学员。 – jeramie

+1

我最终编写了一些额外的代码,将OpenIdConnectAuthentication与其他提供者一起使用,而不是通过ADFS来完成。干杯! – jeramie

相关问题