替代认证、授权和记帐应用程序。

django-talos的Python项目详细描述


#talos是一种替代的身份验证、授权和记帐应用程序。与原来的django.contrib.auth和django guardian相比,它提供了一些改进,但并没有减少替换。迁移到Talos或启动新的应用程序时应慎重考虑。

但不包括任何实际算法。



一些改进包括:
*每个模型和每个对象权限。
*与django.contrib.admin集成。
*任意权限。
*按电子邮件地址注册。
*各种凭据键入支持。用户名+密码、网络地址、otp、客户端证书等等。验证这些凭据的各种后端。分离为主体、标识和凭据。
*角色成员资格的证据要求。
*用于操作主体、标识的管理命令,和凭据。
*列出并强制注销活动会话。
*具有权限继承的角色层次结构。

*用户登录时提供用户名和密码
*根据内部凭据进行验证数据库
*根据外部LDAP数据库验证基本凭据
*根据外部Microsoft活动目录数据库验证基本凭据
*用户登录时提供用户名和密码,但仅从特定的IP子网
*支持IPv4和IPv6
*用户登录提供用户名和密码,一次性密码
*一次性密码可能是专用硬件令牌,google authenticator或microsoft authenticator
*用户登录时提供用户名和密码以及一次性密码,但只能从特定的ip子网
*一次性密码可以是专有的硬件令牌,google authenticator或microsoft authenticator
*支持ipv4和ipv6
*提供用户名和密码的应用程序登录
*根据内部数据库验证基本凭据
*根据外部ldap数据库验证基本凭据
*根据外部Microsoft Active Directory数据库验证基本凭据
*支持http授权头
*应用程序从特定IP子网登录
*不提供其他凭据
*支持IPv4和IPv6
*应用程序登录提供访问令牌
*支持http授权头
*应用程序登录提供访问令牌,但仅来自特定的ip子网
*支持http授权头
*支持ipv4和ipv6

权限提升(sudo,uac,等等)talos设计中考虑的场景:
*用户提升提供用户名和确认先前用于身份验证的密码的权限
*用户提升提供用户名和确认先前用于身份验证的密码的权限,但仅限于特定IP子网
*支持IPv4和IPv6
*用户提升提供用户名和一次性密码的权限
*一次性密码可以是专用硬件令牌、Google身份验证程序或Microsoft身份验证程序
*用户提升提供用户名的权限,一次性密码和确认密码d以前用于身份验证
*一次性密码可以是专用硬件令牌,google authenticator或microsoft authenticator
*用户提升提供用户名、一次性密码和确认以前用于身份验证的密码的权限,但仅从特定的IP子网
*支持IPv4和IPv6
*一次性密码可以是专用硬件令牌、Google身份验证程序或Microsoft身份验证程序

\quick start

\settings.py
1。将"talos"添加到已安装的应用程序设置中。


已安装的应用程序=[

"talos",
]


2。将用户模型设置为talos.principal

auth_user_model='talos.principal'

>3。将身份验证后端替换为talos后端。它们用于django.contrib.admin或直接依赖于django.contrib.auth的其他应用程序

authentication_backends=(
'talos.compatibility.auth.auth backend',



4。修复userattributesimalityvalidator选项以根据talos进行验证。主体字段

auth_password_validators=[
{
‘name':'django.contrib.auth.password_validation.userattributesimalityvalidator',
‘options':
{
'用户属性':('brief'u name','full'u name','email','phone'),
}
},

]



5.禁用django.contrib.auth迁移

migration\u modules={
"auth":none
}


6。替换会话中间件

middleware=[
'django.middleware.security.securitymiddleware',
'talos.middleware.sessionmiddleware',
'django.middleware.common.commonmiddleware',

]

将talos url添加到项目url patterns

urlpatterns=[
path('admin/',admin.site.urls)、
path('auth/',include(auth\u url\u patterns))、

]


在元类中指定模型权限。使用单一名称、名称元组、"\u all"作为('select'、'create'、'update'、'delete'、)的快捷方式。建议的名称是"select"、"create"、"update"、"delete"。如果还指定了任何其他权限,强烈建议始终包含"select"。默认值为'\uu all'

>类元:
模型权限='\uu all'


2。在元类中指定对象权限。使用单一名称、名称元组、"\u all"作为('select'、'create'、'update'、'delete'、)的快捷方式。建议的名称是"select"、"create"、"update"、"delete"。如果还指定了任何其他权限,强烈建议始终包含"select"。默认值为none

class meta:
object_permissions='\u all_uuu'

>3。在元类中指定相关的安全性。使用foreignkey字段名的元组。若要读取对象,应具有对相关对象的"选择"模型或对象权限。默认值为none

class meta:
related_securables=('fk_field_name',)


4。用于模型管理器选择对象的主要方法。第一个参数是talos.principal实例,例如request.principal。第二个参数是permission,如果未指定,则为"select"。


\bash

1。创建新主体

./manage.py创建主体--输出状态--新的简称"admin"--新的全名"administrator"--新的电子邮件"administrator@example.com"--新的活动

2。为现有主体创建新用户名

./manage.py创建基本身份--输出状态--主体电子邮件"administrator@example.com"--新用户名"administrator"

>3。为现有主体创建新密码

./manage.py创建基本凭据--输出状态--主体电子邮件"administrator@example.com"--新密码"p@$$w0rd"

4。将现有主体添加到现有角色

./manage.py create_role_membership--输出状态--主体电子邮件"administrator@example.com"--角色代码"administrators"

\architecture


1。证据-认证期间提供的任何类型的证据。证据可以有几种。它可以是:
*知识因素-主体知道的东西,例如密码。
*所有权因素-主体拥有的东西,例如OTP令牌或电话。
*内在因素-主体是的东西,例如指纹或视网膜。
*位置因素-某个主体是,例如IP地址。
*信任因素-了解某个主体的人,例如SSL证书颁发机构。
2。权限-执行与模型无关的操作的权限。例如,登录到管理面板。
3。模型权限-对特定模型的任何实例的访问模式的权限。例如选择、创建、更新或删除。优先于对象权限。
4.对象权限-对特定模型的特定实例的访问模式的权限。例如选择、创建、更新或删除。优先级低于模型权限。
5。角色目录-具有相同必需证据的角色集合。
*角色目录可以是内部的,即整个信息保存在本地数据库中,也可以是外部的,即信息保存在外部,并根据需要访问。例如,ldap目录可以用作外部角色目录。
*角色目录可能分配了选项。定义的选项列表取决于角色目录类型。
*可能为角色目录分配了必需的证据。只有在身份验证期间提供了所有必需的证据时,主体才会被视为目录中角色的成员。
6。角色-定义权限级别的作业函数。
*角色可能已授予模型权限。
*角色可能已授予权限。
*角色可能具有父模型,在这种情况下,角色将继承模型权限和授予父模型的权限。角色可能会吊销某些继承的模型权限和特权。取消尚未授予的模型权限或特权不是错误。
7.Pricipal—可以进行身份验证的实体。例如人员或服务。
*出于兼容性原因,主体实现了一些与凭据和身份相关的功能。这是有限的,不应直接使用,仅为依赖于django.contrib.auth的应用程序提供,并且只支持兼容性所需的功能子集。
*anonymous是物化主体。因此,可以将权限授予匿名用户。
8.标识目录-主体标识的集合。例如,用户名。
*在现实世界中,主体可能具有多个标识。例如"user"、"user@domain"、"domain\user"。所有标识都具有同等优先级,不存在"主"标识。
*标识目录可能具有指向凭据目录的链接,以限制标识的使用范围。
9。身份-唯一标识主体的东西。
10。凭据目录-主体凭据的集合。
11。凭据-主体在身份验证期间提供的证据集。
12。会话-主体和服务器之间的虚拟连接。会话为匿名或已验证的操作提供安全上下文。会话通过身份验证操作(登录或注销)重新启动,这会影响所有后续操作。



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓中通过TCP发送时java文件损坏   Java测试预期=异常失败,断言错误   java ssh4 LazyInitializationException   java是否可以在集合中添加重复项?   java是一个免费的开源数据库管理工具   java是否可以在导出的html中嵌入图像   编译器构造解释一些东西,并用Java运行生成的字节码?   java KeyPairGenerator未生成随机密钥   java使用正则表达式生成字符串而不是匹配字符串   java中的多线程线程间通信   具有复合密钥的java Hibernate合并问题   java不能在MainActivity类之外使用SharedReferences变量   正在获取切割/零件异常消息。使用java Spring ControllerAdvice   java tomcat漏洞讨论   javascript在Java中实现“system”命令   java如何在JUnit5*中加载*Spring测试上下文之前获取回调?   java bluej关于缺少返回语句   JavaSpringBoot@ModelAttribute包含使用字符串键的其他模型   从可选中抛出异常。ifPresent()Java 8