允许在Django项目中使用AWS Cognito安全性的库
项目描述
Django Cognito认证
此库的目的是提供一个支持Django的包,允许轻松实现用基于AWS Cognito的认证替换Django的默认认证。
这是Alex Plant的django-cognito原作的分支。
安装
虽然这可能在Django 2.x上仍然有效,但重点是使其在Django 3.x上工作。欢迎提交PR以保持2.x的工作状态。
pip install django-cognito-redux
使用
需要补充...
通过使用头部ACCESSTOKEN
和IDTOKEN
分别传入访问令牌和ID令牌。还可以使用REFRESHTOKEN
传入刷新令牌。
AWS凭证
此库使用boto3,它遵循特定的路径来决定使用哪些凭证。强烈建议阅读他们的配置凭证部分。
The mechanism in which boto3 looks for credentials is to search through a list of possible locations and stop as soon as it finds credentials. The order in which Boto3 searches for credentials is:
1. Passing credentials as parameters in the boto.client() method
2. Passing credentials as parameters when creating a Session object
3. Environment variables (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_DEFAULT_REGION`, `AWS_PROFILE`)
4. Shared credential file (~/.aws/credentials)
5. AWS config file (~/.aws/config)
6. Assume Role provider
7. Boto2 config file (/etc/boto.cfg and ~/.boto)
8. Instance metadata service on an Amazon EC2 instance that has an IAM role configured.
建议不要在实例化新会话或客户端时传入参数。相反,在生产中建议使用IAM角色,并在本地使用配置文件。
以示例来说,我通常在我的 ~/.aws/credentials
中设置一个配置文件,并在 ~/.aws/config
中为该配置文件设置默认区域。从这里,我将 AWS_PROFILE=profilename
设置为环境变量,这样我的应用程序就知道要使用什么了。这允许进行本地开发,同时能够在生产环境中使用 IAM 角色,并且不需要设置很多环境变量。
建议
如果可能,建议使用自定义用户模型来设置模型上需要的内容,而不是对现有用户模型进行修改。
设置
COGNITO_USER_MODEL_FIELD_REF_FIELD
您希望用于查找的用户模型上的字段。
COGNITO_USER_MODEL_FIELD_REF_FIELD = 'sub'
COGNITO_TOKEN_REF_FIELD
您希望从 cognito 用户中保存为模型引用的字段
COGNITO_TOKEN_REF_FIELD = 'sub'
更多示例
COGNITO_TOKEN_REF_FIELD = 'sub'
COGNITO_USER_MODEL_FIELD_REF_FIELD = 'sub'
# Is equivilent to
User.objects.get(sub='sub')
COGNITO_TOKEN_REF_FIELD = 'username'
COGNITO_USER_MODEL_FIELD_REF_FIELD = 'email'
# Is equivilent to
User.objects.get(username='email')
COGNITO_USER_FIELD_MAPPING
字典的键映射到用户字段,值映射到从 ID 令牌中提取的数据。这用于在创建时将数据保存到用户模型。
COGNITO_USER_FIELD_MAPPING = {
"email": "email",
"first_name": "custom:first_name",
"last_name": "custom:last_name",
"sub": "sub"
}
APP_CLIENT_ID =
用户池的应用程序客户端的客户端 ID
APP_CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
APP_SECRET_KEY
用户池客户端的秘密密钥
COGNITO_POOL_ID
用户池 ID
COGNITO_POOL_ID = 'us-east-1_xxxxxxxxx'
USE_CSRF
USE_CSRF = False
HTTP_ONLY_COOKIE
HTTP_ONLY_COOKIE = False
SECURE_COOKIE
SECURE_COOKIE = False
AUTO_CREATE_USER
如果用户不存在,则在令牌验证通过时创建用户。
AUTO_CREATE_USER = True
变更日志
1.4.5
- 更新 pyjwt 和 cryptography 依赖项
1.4.4
- 不要直接从设置中获取。这可能导致在模块加载时出现奇怪的错误。
- 将模块加载移动到中间件的实际中间位置,以便不初始化不必要的代码。
1.4.3
- 更改 django-rest-framework 依赖项以更具包容性。
1.4.1
- 将依赖项升级以与 Django 3.0 保持同步
1.4.0
- 更改令牌验证以验证 ID 令牌和访问令牌
- 添加将 ID 令牌中的属性映射到用户模型的设置
- 将令牌的使用改为 ID 令牌而不是访问令牌
- 添加更多文档
- 覆盖了在用户创建之前有人可能多次调用后端的情况
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
django-cognito-redux-1.4.5.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | daefe49ff8ee1e0312fbce78970800e646a52d8c00bf3c0f16056a8cbcf46b70 |
|
MD5 | 33b31bb45aa8a9eee70622f597c64dc1 |
|
BLAKE2b-256 | ef9d86cc530accb0f8d0f72a2f1d7fd4fd4981ce40066f45d6b1d71090658ecb |