跳转到主要内容

允许在Django项目中使用AWS Cognito安全性的库

项目描述

Django Cognito认证

此库的目的是提供一个支持Django的包,允许轻松实现用基于AWS Cognito的认证替换Django的默认认证。

这是Alex Plantdjango-cognito原作的分支。

安装

虽然这可能在Django 2.x上仍然有效,但重点是使其在Django 3.x上工作。欢迎提交PR以保持2.x的工作状态。

pip install django-cognito-redux

使用

需要补充...

通过使用头部ACCESSTOKENIDTOKEN分别传入访问令牌和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 (13.9 kB 查看哈希值)

上传时间

构建分布

django_cognito_redux-1.4.5-py3-none-any.whl (18.1 kB 查看哈希值)

上传时间 Python 3

由以下机构支持