针对 Windows 域的分散式身份验证
Posted
技术标签:
【中文标题】针对 Windows 域的分散式身份验证【英文标题】:Decentralized authentication against Windows domain 【发布时间】:2012-03-30 21:18:02 【问题描述】:有许多设置非常简单的第三方分散式身份验证解决方案:使用 Facebook 凭据、OpenID、OAuth 等登录。
如何在 Windows 域环境中的防火墙内执行类似操作?
场景:
防火墙内的 Python Web 应用程序,托管在 Linux 服务器上。 用户拥有 Windows 桌面并通过 Windows 域进行身份验证我知道我可以使用 LDAP 针对 Active Directory 验证用户名/密码,但这不是我想要的。我根本不希望我的应用程序处理用户名/密码。我希望它像 OpenID 一样工作,即我的应用程序将用户重定向到某种 Windows 身份提供程序网页。
是否有开箱即用的 Windows/IIS 解决方案?
编辑:
Windows Identity Foundation 是我要找的吗?或者也许 WIF 有构建模块?【问题讨论】:
【参考方案1】:冒着给出太多答案的风险,在我看来ADFS 2.0 是您阻力最小的路径。至于将基于声明的访问集成到您的 python 应用程序中,我已经看到pysaml2 被推荐作为这样做的一种方式,但我不能从经验中说出来。
【讨论】:
我不是python人,所以除了我链接的网站外,我对pysaml2了解不多。在 ADFS 方面,有大量文档。我不知道那里是否有任何针对 python SP 的特定教程的 ADFS,但您需要的 ADFS 只是一个指南,向您展示如何部署它以作为 SAML2 身份提供程序运行。这是一个示例:technet.microsoft.com/en-us/library/… 另一个有趣的链接:wiki.service-now.com/… 也许这个库可以提供帮助? github.com/Trondheim-kommune/python-saml-adfs【参考方案2】:我不是 Windows 用户,而是来自 Atlassian 的 Crowd:
将在 Windows 上运行 可以针对 Active Directory 进行身份验证 包括一个 OpenID 提供程序因此,如果您的应用程序可以处理 OpenID,那么您将拥有所需的一切。
【讨论】:
看起来 Crowd 可以工作。但是,有几件事我不喜欢它。它是基于 java 的,我更喜欢更容易集成到 Windows/IIS 环境中的解决方案。一个 IIS 应用程序将是理想的。【参考方案3】:WIF 和 Azure ACS 将提供此功能。例如Adding a Custom OpenID Provider to ACS… with JUST ONE LINE of PowerShell Code.
或者您可以将 Dot Net Open Auth 与您自己的 STS 或使用类似 Identity Server 的东西集成。
【讨论】:
WIF 和 DotNetOpenAuth 都是 .NET 框架,因此它们不会对集成他的 python 应用程序有太大帮助,除非它是铁 python.ACS 如果他想联合他的应用程序与多个身份是一个有趣的选择提供商,但听起来他只是想要内部 Windows 集成身份验证。 能否将 Azure ACS 安装在内部 Windows 服务器上?还是只能在 Azure 云平台上使用? 否 - 仅在 Azure 云平台上可用。但是看看我的其他建议。两者都可以在内部安装 - 但根据您的用例,它们可能需要外部访问。以上是关于针对 Windows 域的分散式身份验证的主要内容,如果未能解决你的问题,请参考以下文章
ADAL AcquireToken Windows 身份验证 UWP
如何针对跨域的 PHP 会话 ID 对 Socket.IO 进行身份验证
将特定域的 ASP.NET 模拟用户添加到 windows 身份验证
将 Forms 身份验证与 Windows 身份验证混合使用