Django 和通用访问卡 (CAC)

Posted

技术标签:

【中文标题】Django 和通用访问卡 (CAC)【英文标题】:Django and Common Access Cards (CAC) 【发布时间】:2011-04-14 07:16:32 【问题描述】:

一个用 Python 编写的网络应用程序正在计划中,Django 是框架的主要竞争者。

一个要求是 CAC 访问,无需手动输入用户名和密码。据我所知,CAC 访问不是 Django 包含的“电池”的一部分。

作为一个整体框架(不一定是一个坏属性),一旦你修改了核心,Django 就有一个高维护性的代表。我可以轻松地将 CAC 访问权限添加到 Django 站点吗?以后可以轻松维护吗?

或者我们应该考虑一个不同的 Python 框架?

仅供参考.. 关于 CAC 访问的有趣演示 link

【问题讨论】:

你碰巧得到这个工作了吗?我正在寻找解决方案。 【参考方案1】:

您无需修改​​核心即可启用此功能。 Django 支持第三方身份验证后端,而且它们相当容易编写——你只需要支持两种方法,get_userauthenticate。因此,您的实现只需要使用您的 CAC 接口执行这些操作,一切都会照常工作。

详情请见the documentation。

在其他答案后编辑我不知道为什么人们说这在 Django 中很困难。是的,Django 的许多部分都很难定制。但这是使非常变得容易的一个特殊部分。我已经在 Django 中编写了几个身份验证后端,它们不仅非常简单,而且它们“只适用于”框架的其余部分,包括管理员。无需修改任何其他内容即可使其正常工作。

【讨论】:

谢谢丹。我会试一试,并希望“一切都会照常工作”。【参考方案2】:

我今天刚刚通过子类化 django.contrib.auth.middleware.RemoteUserMiddleware 并将 header 属性更改为我在 apache conf 中设置的属性。我刚刚将 django.contrib.auth.backends.RemoteUserBackend 和我的中间件添加到设置中,它运行良好。

【讨论】:

【参考方案3】:

扩展 contrib.auth 令人头疼。这是 django 中最糟糕的事情。如果您需要高度自定义的身份验证后端,我建议您使用不同的框架。

【讨论】:

以上是关于Django 和通用访问卡 (CAC)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用通用访问卡连接到 HTTPS 服务器

如何在 Node/Express 中使用 CAC 对用户进行身份验证

Django 允许匿名 ajax 请求访问通用视图

是否可以将请求数据访问到 django 通用列表视图中?

Django 基于类的通用视图和身份验证

通用视图中的 request.user 和 django 中的纯函数