未提供项目描述
项目描述
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用户。 |
安装
- 将上述设置添加到您的设置中。
COGNITO_CONFIG = {
"ENDPOINT": "",
"CLIENT_ID": "",
"CLIENT_SECRET": "",
"JWKS_URI": "",
"REDIRECT_URI": "",
"RESPONSE_HOOK": ""
"REQUIRED_GROUPS": []
}
-
定义您的身份验证后端。从
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
- 将
SuperUserBackend
添加到您的身份验证后端。
AUTHENTICATION_BACKENDS = (
...
"django_cognito_saml.backends.SuperUserBackend",
...
)
- 将 cognito saml 网址添加到您的
urls.py
。
urls = [
...
path("/", include("django_cognito_saml.urls")),
]
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
django_cognito_saml-0.1.6.tar.gz (8.5 kB 查看哈希值)