Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django应用程序中集成ADFS 2.0身份验证的最佳方法_Django_Authentication_Active Directory_Single Sign On_Adfs - Fatal编程技术网

在Django应用程序中集成ADFS 2.0身份验证的最佳方法

在Django应用程序中集成ADFS 2.0身份验证的最佳方法,django,authentication,active-directory,single-sign-on,adfs,Django,Authentication,Active Directory,Single Sign On,Adfs,我需要在Django应用程序中使用Active Directory联合身份验证服务(ADFS)。我将创建一个身份验证后端,但是有人会推荐我使用哪种工具使其尽可能快,还是从头开始实现身份验证更好 我阅读了Microsoft网站上的一些文章,并检查了: 但是,尽管它们解释了一些关于ADF和SSO的核心概念和想法,但在我看来,这些示例更侧重于.NET堆栈。在.NET中编写一个基本客户端并嗅探流量将为您提供所有必要的线索,以便在任何技术中实际实现流 基本上,你的django应用程序有一个adfs

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

我阅读了Microsoft网站上的一些文章,并检查了:


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

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

基本上,你的django应用程序有一个adfs用来返回的端点。在adfs中注册端点(如)

然后,应用程序通过重定向到来初始化流

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

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

但是,为了防止伪造,您需要验证令牌。验证包括检查XMLdsig签名并验证签名证书指纹是否与adfs签名证书的指纹匹配。这取决于您对x509证书和xml验证的了解程度,可能简单,也可能困难。试着在django社区寻找任何支持


总之,正如您所看到的,基本流程很简单,只需要两个重定向,从应用程序到adfs的302重定向和从adfs到应用程序的回发。虽然我们每天都在.net中这样做,但我们的合作伙伴在我们的指导下在php/java中这样做。

这里有一个软件包:

您看过这张照片了吗?