我们在 Windows Azure 中运行一个 Web 应用程序,各种客户都可以登录。最近,越来越多的客户要求某种单点登录解决方案,或者至少将他们的本地/域用户与我们应用程序中的用户同步。我查看了几个选项,但还没有找到一个可行的。下面我列出了我一直在查看的内容,但基本上我想得到一些关于如何解决这个问题的建议。
第三方服务或许可以做到这一点,但通常这些服务需要我们和客户付出一些或大量的工作才能实现。这也意味着我们必须根据客户的偏好实施多个或多个此类解决方案。
大多数(如果不是全部)客户都会拥有本地 Active Directory,如果我们能以某种方式将其用于我们的应用程序,那就太好了。将我们的 Web 应用程序连接到本地 AD 并不是一个真正的选择,因为系统管理员(可以理解)不会授予我们访问它的权限。
我们也可以在 Azure 中设置 AD。因此,我认为也许我们可以将本地 AD 同步到 Azure 中的 AD,然后从那里获取。然而,在测试 Microsofts Azure Active Directory Connect 工具时,它要求我提供 Azure 环境的管理员登录信息。显然,我们不想让客户访问我们的 Azure 门户,因此看起来这种方法行不通。
这一切中的另一个问题是我是一名程序员,所有的 AD 内容都超出了我的舒适区,我可能在错误的地方寻找。
有没有人有这方面的经验并能给我指明正确的方向?
答案1
ADConnect 是将本地目录与云同步的方法。它要求输入用户名密码来设置初始同步,并在您再次使用该工具登录时对同步进行更改。在设置时,您还需要一个本地管理员的 DA 帐户。如果您没有这两个帐户中的一个或两个都没有,则无法完成设置。
按照您的建议,您需要设置 Azure B2C。否则,请在您的域和客户域之间设置 ADFS 联合,这样您就不必到处询问用户名/密码。我假设您的应用程序具有声明感知功能,并且您有自己的 Windows AD 来配置 ADFS。
如果您尝试设置 ADFS 测试环境,我按照 4 部分博客构建了我的第一个实验室 - 希望它也能为您正常工作。
http://blogs.technet.com/b/askpfeplat/archive/2013/12/09/how-to-build-your-adfs-lab-on-server-2012-part-1.aspx http://blogs.technet.com/b/askpfeplat/archive/2013/12/23/how-to-build-your-adfs-lab-on-server-2012-part2-web-sso.aspx
答案2
如果您将应用程序配置为支持 SAML 身份验证,那么客户可以配置他们的 ADFS(或其他)以与其 AD 配合使用。这通常是处理第三方应用程序的 SSO 的方式。
工作方式是,您仍然管理身份和对应用程序的访问,但客户能够利用这一点并将其与自己的“声明”联系起来,该声明可以包含 AD 用户名。这就是 ADFS 以及其他联合身份平台所做的(联合部分)。但是,您确实需要提供一种在身份提供者(您的和他们的)之间建立信任的方法。
您可以在自己这边创建自定义身份提供程序、使用第三方服务或部署联合服务器(如 ADFS)。但还有其他(商业和开源)服务,如 PingFederate 和 Shibboleth。那里有数百种选择。如果您想要一个 SDK - Ping Identity(PingFederate 开发人员)为多种语言(Java、C# 等)提供了一个。我相信那里也有开源 SDK 可以提供帮助。
身份是一个复杂的话题——你越能将其转移给专门的公司或团队,你的情况就会越好(如其他答案所述,Azure B2C 处于预览阶段,但如果你想更快地开始,请查看第三方)