我正在寻找基于javaScript(没有服务器旁语言)的应用程序的单个登录。
要求:
- 代理登录到Windows(用户集成到Active Directory)
- 打开我的网页
- 基于谁登录Windows,我的应用程序将用于广告并拉一些用户指定数据(例如电子邮件,电话)
我该怎么做?
根据我的理解,我将需要ADF。所以:
-
用户转到我的网页
-
我的网页调用一些Web服务或Web应用程序(在C#上构建)
-
将对AD FS进行身份验证并获得索赔
-
获取索赔中的电话号码和电子邮件,或获取用户名和查询广告以获取电话和电子邮件
-
将数据返回我的网页(在JavaScript上构建)
我的理解似乎有问题!
请根据我的要求提出更合适的解决方案
坦率地说,我想不出没有服务器端处理的方法来使其正常工作。这是因为WS-FEDERATION协议ADFS的使用不仅是返回索赔。
这是关于ret SAML令牌。令牌包含索赔,但最重要的是它是签名使用XMLDSIG。您将如何验证令牌是第一个大问题。但是肯定有外部库可以允许。
但是,可以通过修改浏览器中的脚本来轻松绕过这种身份验证。这是因为WS-Federation停止了您获得令牌的位置,然后由您通过代币以获得实际身份。而且,仅在客户端处理时,这将无法工作。
adfs 3不支持oauth2隐式配置文件,这将是一个选项,但是您仍然需要验证服务器上的令牌以避免会话固定。
您可以设置支持OAuth2/OpenID Connect隐式配置文件之类的东西http://leastprivilege.com/2013/09/19/adding-oauth2-to--adfs-and-bridging-the-ph---------------------------------------------------------------------------------------
另一个选项是使用诸如Auth0(免责声明:我为auth0工作)之类的东西,它也支持OAuth2/OpenID Connect Impandciit配置文件。在这种情况下,您不需要ADF,您在网络上安装的连接器/代理不需要打开防火墙或其他任何内容,并且支持适用于JavaScript应用程序的隐式配置文件。这是单页应用教程的一个示例(如果您创建一个帐户,它将用您的凭据来量身定制文档):
https://docs.auth0.com/singlepageapp-tutorial