跳转到主要内容

未提供项目描述

项目描述

django-cognito-saml

使用cognito(通过pyjwt)实现django身份验证的库。

假设

  • 使用授权码流程。隐式授权不安全,因为访问令牌在没有加密的情况下通过请求参数传输。

设置

以下设置应在您的设置文件中针对一个COGNITO_CONFIG字典设置。

设置 描述
ENDPOINT 您的cognito应用的托管域名或自定义域名
CLIENT_ID 您的用户池中的应用程序的CLIENT_ID
CLIENT_SECRET 您的用户池中的应用程序的CLIENT_SECRET
JWKS_URI 您的用户池的JWKS URI。用于验证JWT。
REDIRECT_URI 可选 通过代理,可以使用一个cognito应用与多个网站共享。
RESPONSE_HOOK 可选 验证后钩子,用于修改响应(可能添加头)。指定为django import_string。
REQUIRED_GROUPS 可选 当使用SuperUserBackend时指定,以限制只能登录到包含所有`REQUIRED_GROUPS`的`custom:groups`的saml用户。

安装

  1. 将上述设置添加到您的设置中。
COGNITO_CONFIG = {
    "ENDPOINT": "",
    "CLIENT_ID": "",
    "CLIENT_SECRET": "",
    "JWKS_URI": "",
    "REDIRECT_URI": "",
    "RESPONSE_HOOK": ""
    "REQUIRED_GROUPS": []
}
  1. 定义您的身份验证后端。从django_cognito_saml.backends.CognitoUserBackend继承。

    通过自定义 authenticate 方法来定义您的用户 username 字段。如果您想为用户添加额外的字段或修改用户的权限,请重写 configure_user 方法。configure_user 方法可以访问 self.cognito_jwt,其中包含包含 cognito saml 声明的解码 jwt 令牌。

    如果想要禁用自动创建用户,请设置 create_unknown_user = False

class CustomCognitoBackend(CognitoUserBackend):
    # Change this to False if you do not want to create a remote user.
    create_unknown_user = True

    def authenticate(  # type: ignore[override]
        self, request: HttpRequest, cognito_jwt: dict[str, Any], **kwargs: Any
    ) -> Optional[AbstractBaseUser]:
        # Customizing the username field used to create the user
        remote_user = cognito_jwt["username"]
        user = super().authenticate(request, remote_user=remote_user, **kwargs)
        return user

    def configure_user(  # type: ignore[override]
        self, request: HttpRequest, user: AbstractBaseUser, created: bool = True
    ) -> AbstractBaseUser:
        # Configuring the user post login
        if created:
            user.name = self.cognito_jwt["name"]
            user.save()
        return user
  1. SuperUserBackend 添加到您的身份验证后端。
AUTHENTICATION_BACKENDS = (
    ...
    "django_cognito_saml.backends.SuperUserBackend",
    ...
)
  1. 将 cognito saml 网址添加到您的 urls.py
urls = [
    ...
    path("/", include("django_cognito_saml.urls")),
]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

django_cognito_saml-0.1.6.tar.gz (8.5 kB 查看哈希值)

上传时间 源代码

构建分发

django_cognito_saml-0.1.6-py3-none-any.whl (11.2 kB 查看哈希值)

上传时间 Python 3

由以下组织支持