一些背景资料: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的电子邮件测试日志非常完美。从另一租户组织电子邮件进行测试时,问题在于,认证失败,错误请求消息:
一些研究,看来这是由于登录表单被构建login.microsoftonline后。 com/tenantid,而login.microsoftonline.com/common应该用于多租户应用程序。因此,我重新从https://login.microsoftonline.com/common/federationmetadata/2007-06/federationmetadata.xml重新导入了元数据并进行了更新。
现在我实际上可以在使用另一个租户组织帐户登录时看到同意请求,但是在身份验证后,sts.companyname.ca/adfs/ls发布失败,因为该令牌已针对“sts.windows .net/0000-000000-000000-0000“,但AD FS中的声明提供程序由sts.windows.net/{tenantid}占位符标识。
我不知道如何使这个工作只有一个单一的Azure声明提供程序的模板化的终点(我也只能添加1个天蓝色的声明提供程序,因为他们都使用相同的签名证书)。
任何帮助克服这个障碍将不胜感激。
谢谢。 Azure AD B2B看起来可能是要走的路。看来邀请外部用户的过程依赖于导入最多2000行的csv文件。这是否要求我们每次邀请新用户加入合作伙伴租户,以便他们能够访问我们的资源?我们的合作伙伴是学校董事会,其中一些拥有100,000多名用户,需要随时添加新学员。 – jeramie
我最终编写了一些额外的代码,将OpenIdConnectAuthentication与其他提供者一起使用,而不是通过ADFS来完成。干杯! – jeramie