【问题标题】:Best way to Integrate ADFS 2.0 authentication in a Django application在 Django 应用程序中集成 ADFS 2.0 身份验证的最佳方式
【发布时间】:2013-11-12 13:34:11
【问题描述】:

我需要在 Django 应用程序中使用 Active Directory 联合身份验证服务 (ADFS) 身份验证。我将创建一个身份验证后端,但是有人会推荐我使用哪种工具来使其尽可能快,或者从头开始实施身份验证会更好吗?

我已经阅读了微软网站上的一些文章,并检查了:

尽管这些示例解释了一些关于 ADFS 和 SSO 的核心概念和想法,但在我看来,这些示例更侧重于 .NET 堆栈。

【问题讨论】:

标签: django authentication active-directory single-sign-on adfs


【解决方案1】:

在 .NET 中编写一个基本的客户端并嗅探流量将为您提供所有必要的线索,以在任何技术中实际实现流。

基本上,您的 django 应用程序有一个端点 adfs 用于返回。您在 adfs 中注册端点(如 https://myapp.com/authgateway)。

然后,您的应用程序通过重定向到 https://adfs.address/adfs/ls?wa=wsignin1.0&wtrealm=https://myapp.com/authgateway 来初始化流程

Adfs 选择请求并验证凭据。然后它会创建一个 SAML 令牌并使用包含该令牌的 POST 请求重定向回您的应用程序。

然后是困难的部分,SAML 令牌是一个纯 xml,您可以使用它来建立本地用户会话。其中一个声明包含 adfs 提供的用户名,其他声明可以包含角色、电子邮件,以及您在 adfs 端配置的任何内容。

但是,为了防止伪造,您需要验证令牌。验证包括检查 XMLdsig 签名并验证签名证书指纹与 adfs 签名证书的指纹匹配。根据您对 x509 证书和 xml 验证的了解程度,这可能很容易,也可能很困难。尝试在 django 社区寻求支持。

无论如何,正如您所看到的,基本流程很简单,只需进行两次重定向,即从您的应用程序到 adfs 的 302 以及从 adfs 到您的应用程序的 POST。虽然我们每天都在 .net 中执行此操作,但我们的合作伙伴在我们的指导下使用 php/java 执行此操作。

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 2013-08-31
      • 2012-08-29
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多