我们正在创build一个应用程序(希望)允许用户通过多种方式进行身份validation。 无论是基于云的服务(谷歌,脸谱等), 或希望 – 由自己的公司的Active Directory。
他们是一个相当简单的方法来做到这一点,而不是过度地达到客户愿意做的事情吗?
在高层次上,您可能需要花一些时间思考如何在应用程序上构build身份层。 如何抽象所有不同的身份validation提供程序。 其中一种方法是利用基于索赔的身份识别方法。 您不需要在应用程序中embedded所有的authentication/授权逻辑,而是可以在这个层中将来自authentication提供者的用户属性转换为通用表示。 这就是所谓的“基于索赔的身份”
您可以从微软的“基于声明的身份和访问控制指南(第二版)”下载一本关于这种方法的免费书籍。
在更具体的层面上,实现将取决于您使用的平台/语言和可用的库。 如果您想与社交身份提供商集成,通常使用的协议是OAuth2(Google,Facebook,LiveID)或OAuth1.0a(Twitter)。 在NET中,你有像DotNetOpenAuth这样的库来实现这些协议。 如果要与ADFS(Active Directory联合身份validation服务)集成,则使用的协议是带有SAML令牌的WS-Federation或SAML 2.0协议。 在.NET中,select的是Windows Identity Foundation(WIF)。 在同一个应用程序中混合使用,并不容易。 这就是我的意思是投资于一个共同的抽象层。
最后,有些云服务可能会有所帮助。 这些是您的应用程序和身份提供者之间的经纪人。 从应用程序的angular度来看,你实现了一个库:
Windows Azure访问控制服务(ACS) :作为参考,以下是将ASP.NET与ACS集成的教程http://www.windowsazure.com/en-us/develop/net/how-to-guides/access-控制
Auth0 :作为一个参考,这里是一个教程集成ASP.NET与Auth0 https://docs.auth0.com/aspnet-tutorial (免责声明:我工作在Auth0)
我们有几个基于云的第三方系统,需要访问我们的Active Directory才能提供单点login。
对于这两个我们只是build立一个IP地址locking的防火墙发布规则,以便只有特定的服务器可以通过互联网连接到我们的域控制器。 它也仅用于encryptionstream量。
根据你的防火墙你有不同的configuration,所以如果你更新你的问题的细节,你可能会得到更具体的答案
Microsoft使用基于Forefront Identity Manager和ADFS的“DirSync”工具在本地目录和云目录之间进行单点login。 这就是他们如何获得Office 365,Intune和Lync Online的SSO。
你需要实现类似的,最有可能的,或说服客户打开他们的防火墙到您的特定服务,做LDAPS或直接针对他们的广告。