针对 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 身份验证混合使用

Chrome 87 在 CORS 中针对 Windows IIS 10 的 Windows 身份验证失败

在 Silverlight 中使用表单进行 Windows 身份验证 [重复]