设置
我们的配置都是在 OAUTH2_PROVIDER 设置,但 OAUTH2_PROVIDER_APPLICATION_MODEL , OAUTH2_PROVIDER_ACCESS_TOKEN_MODEL , OAUTH2_PROVIDER_GRANT_MODEL , OAUTH2_PROVIDER_REFRESH_TOKEN_MODEL :这是因为Django目前实现可交换模型的方式。看见 issue #90 了解更多细节。
例如:
OAUTH2_PROVIDER = {
'SCOPES': {
'read': 'Read scope',
'write': 'Write scope',
},
'CLIENT_ID_GENERATOR_CLASS': 'oauth2_provider.generators.ClientIdGenerator',
}
一个大的 thank you 感谢来自Django REST框架的家伙们启发了这一点。
可用设置列表
ACCESS_TOKEN_EXPIRE_SECONDS
默认: 36000
访问令牌保持有效的秒数。在此持续时间之后请求受保护的资源将失败。将此值保持在足够高的水平,以便客户端可以在合理的时间内缓存令牌。
ACCESS_TOKEN_MODEL
表示访问令牌的类(模型)的导入字符串。如果您编写了自己的实现(的子类,则覆盖此值 oauth2_provider.models.AccessToken )。
ACCESS_TOKEN_GENERATOR
用于生成访问令牌的可调用对象的导入路径。 oauthlib.oauth2.rfc6749.tokens.random_token_generator 如果未提供,则(通常)使用。
ALLOWED_REDIRECT_URI_SCHEMES
默认: ["http", "https"]
计划的列表 redirect_uri 字段将根据其进行验证。将其设置为 ["https"] 强烈建议只在生产中使用。
对于本机应用程序, http 方案可以安全地与应用程序中的环回地址一起使用 ([::1] 或 127.0.0.1 )。在本例中, redirect_uri 无需明确的端口规范即可配置,因此应用程序接受随机分配的端口。
请注意,您可以覆盖 Application.get_allowed_schemes() 要在每个应用程序的基础上设置此设置,请执行以下操作。
ALLOWED_SCHEMES
默认: ["https"]
计划的列表 allowed_origins 字段将根据其进行验证。将其设置为 ["https"] 强烈建议只在生产中使用。添加 "http" 只有对当地的开发和测试才被认为是安全的。请注意 OAUTHLIB_INSECURE_TRANSPORT 还应将环境变量设置为允许HTTP原点。
APPLICATION_MODEL
表示应用程序的类(模型)的导入字符串。如果您编写了自己的实现(的子类,则覆盖此值 oauth2_provider.models.Application )。
CLIENT_ID_GENERATOR_CLASS
负责生成客户端标识符的类的导入字符串。这些通常是随机字符串。
CLIENT_SECRET_GENERATOR_CLASS
负责生成客户端机密的类的导入字符串。这些通常是随机字符串。
CLIENT_SECRET_GENERATOR_LENGTH
生成的密码的长度(以字符为单位)。如果此值太低,机密可能会受到暴力猜测。
EXTRA_SERVER_KWARGS
要传递给oauthlib的Server类的字典。本地支持三个选项:TOKEN_EXPILES_IN、TOKEN_GENERATOR、REFRESH_TOKEN_GENERATOR。没有额外的处理,所以callable(这三个函数中的每一个都可以是可调用的)必须直接传递到这里,并且类必须实例化(callable应该接受请求作为其唯一的参数)。
GRANT_MODEL
表示您的授权的类(模型)的导入字符串。如果您编写了自己的实现(的子类,则覆盖此值 oauth2_provider.models.Grant )。
APPLICATION_ADMIN_CLASS
表示应用程序管理类的类(模型)的导入字符串。如果您编写了自己的实现(的子类,则覆盖此值 oauth2_provider.admin.ApplicationAdmin )。
ACCESS_TOKEN_ADMIN_CLASS
表示您的访问令牌管理类的类(模型)的导入字符串。如果您编写了自己的实现(的子类,则覆盖此值 oauth2_provider.admin.AccessTokenAdmin )。
GRANT_ADMIN_CLASS
表示授权管理类的类(模型)的导入字符串。如果您编写了自己的实现(的子类,则覆盖此值 oauth2_provider.admin.GrantAdmin )。
REFRESH_TOKEN_ADMIN_CLASS
表示刷新令牌管理类的类(模型)的导入字符串。如果您编写了自己的实现(的子类,则覆盖此值 oauth2_provider.admin.RefreshTokenAdmin )。
OAUTH2_SERVER_CLASS
对象的导入字符串 server_class (或 oauthlib.oauth2.Server 子类)在 OAuthLibMixin 实现OAuth2授权类型的。默认为 oauthlib.oauth2.Server ,除非启用了OIDC支持,当默认值为 oauthlib.openid.Server 。
OAUTH2_VALIDATOR_CLASS
的导入字符串。 oauthlib.oauth2.RequestValidator 验证OAuth2过程的每个步骤的子类。
OAUTH2_BACKEND_CLASS
对象的导入字符串 oauthlib_backend_class 用于 OAuthLibMixin ,以获得一个 Server 举个例子。
REFRESH_TOKEN_EXPIRE_SECONDS
从数据库中删除刷新标记之前的秒数 cleartokens 管理命令。检查 清算令牌 管理命令以了解更多信息。可以是一个 Int 或 datetime.timedelta 。
注:验证刷新令牌时完全忽略此值。如果不更改验证器代码,也不运行清除令牌,则所有刷新令牌都将持续到撤销或时间结束。你应该改变这一点。
REFRESH_TOKEN_GRACE_PERIOD_SECONDS
刷新令牌过期后首次使用该令牌之间的秒数。最常见的情况是,本机移动应用程序在刷新周期中遇到网络连接问题,无法完成完整的请求/响应生命周期。如果应用程序没有宽限期,则应用程序只有一个使用的刷新令牌,唯一的办法是让用户重新进行身份验证。如果启用此选项,建议的值为2分钟。
REFRESH_TOKEN_MODEL
表示刷新令牌的类(模型)的导入字符串。如果您编写了自己的实现(的子类,则覆盖此值 oauth2_provider.models.RefreshToken )。
ROTATE_REFRESH_TOKEN
何时设置为 True (默认)当客户端刷新访问令牌时,将向客户端颁发新的刷新令牌。如果 False ,它将重复使用相同的刷新令牌,并且只用新的令牌值更新访问令牌。另请参阅:可以重写VALIDATOR的ROTATE_REFRESH_TOKEN方法以使该变量(特别是可以与即将到期的刷新令牌一起使用,从而在理论上使它们在接近到期时被轮换)。
REFRESH_TOKEN_GENERATOR
看见 ACCESS_TOKEN_GENERATOR 。这是相同的,但对于刷新令牌。如果未提供,则默认为访问令牌生成器。
REQUEST_APPROVAL_PROMPT
可以是 'force' 或 'auto' 。用于显示授权表单的策略。参考 跳过授权表 。
SCOPES_BACKEND_CLASS
New in 0.12.0 。作用域后端类的导入字符串。默认为 oauth2_provider.scopes.SettingsScopes ,它通过下面定义的设置读取作用域。
SCOPES
备注
(0.12.0+)仅在 ACCESS_TOKEN_GENERATOR 设置为SettingsScope的默认值。
将每个作用域名称映射到其人类描述的词典。
DEFAULT_SCOPES
备注
(0.12.0+)仅在 ACCESS_TOKEN_GENERATOR 设置为SettingsScope的默认值。
默认情况下应返回的作用域列表。这是的密钥的子集 SCOPES 布景。默认情况下,它被设置为 '__all__' 这意味着一整套 SCOPES 将会被退还。
DEFAULT_SCOPES = ['read', 'write']
READ_SCOPE
备注
(0.12.0+)仅在 ACCESS_TOKEN_GENERATOR 设置为SettingsScope的默认值。
的名称。 read 作用域。
WRITE_SCOPE
备注
(0.12.0+)仅在 ACCESS_TOKEN_GENERATOR 设置为SettingsScope的默认值。
的名称。 write 作用域。
ERROR_RESPONSE_WITH_SCOPES
当授权因作用域不足而失败时,在响应中包括所需的作用域。仅在与一起使用时适用 Django REST Framework
RESOURCE_SERVER_INTROSPECTION_URL
用于远程验证令牌的自检终结点(RFC7662)。此URL需要授权令牌 (RESOURCE_SERVER_AUTH_TOKEN )或HTTP基本身份验证客户端凭据 (RESOURCE_SERVER_INTROSPECTION_CREDENTIALS )。
RESOURCE_SERVER_AUTH_TOKEN
用于向自检端点认证自检请求的承载令牌(RFC7662)。
RESOURCE_SERVER_INTROSPECTION_CREDENTIALS
将指向自检终端(RFC7662)的自检请求作为元组进行身份验证的HTTP Basic Auth Client_ID和Client_Secret: (client_id, client_secret) 。
RESOURCE_SERVER_TOKEN_CACHING_SECONDS
从自检终结点接收的授权令牌保持有效的秒数。如果接收到的令牌的过期时间小于 RESOURCE_SERVER_TOKEN_CACHING_SECONDS 将使用过期时间。
PKCE_REQUIRED
默认: True
可以是布尔值,也可以是接受客户端ID并返回布尔值的可调用对象。
不管是不是 Proof Key for Code Exchange 是必需的。
根据 OAuth 2.0 Security Best Current Practice 与 Authorization Code Grant
OIDC_RSA_PRIVATE_KEY
默认: ""
用于签署OIDC ID令牌的RSA私钥。如果未设置,则禁用OIDC。
OIDC_RSA_PRIVATE_KEYS_INACTIVE
默认: []
一组 inactive RSA私钥。这些密钥不是用来签署令牌的,而是在jwks_uri位置发布的。
这对于在关键点旋转期间提供平滑过渡非常有用。 OIDC_RSA_PRIVATE_KEY 可以被替换,并且最近退役的密钥应该保留在该非活动列表中。
OIDC_JWKS_MAX_AGE_SECONDS
默认: 3600
Jwks_uri上的缓存控制标头的最大老化时间值。
这使验证器能够安全地缓存JWK集,而不必为每个令牌重新下载文档。
OIDC_USERINFO_ENDPOINT
默认: ""
用户信息终结点的URL。用于在OIDC发现元数据中通告终结点的位置。更改此设置不会更改 django-oauth-toolkit 为UserInfo端点添加,因此如果您更改此设置,还必须在该端点提供服务。
如果未设置,则使用默认位置,例如 django-oauth-toolkit 挂载在 /o/ ,它将会是 <server-address>/o/userinfo/ 。
OIDC_RP_INITIATED_LOGOUT_ENABLED
默认: False
何时设置为 False (默认) OpenID Connect RP-Initiated Logout 未启用终结点。OpenID Connect RP启动的注销支持 Client (依赖方)要求 Resource Owner (最终用户)在以下位置注销 Authorization Server (OpenID提供程序)。
OIDC_RP_INITIATED_LOGOUT_ALWAYS_PROMPT
默认: True
是否始终提示 Resource Owner (最终用户)确认由 Client (依赖方)。如果它被禁用,则 Resource Owner 只有在标准要求时才会提示(最终用户)。
OIDC_RP_INITIATED_LOGOUT_STRICT_REDIRECT_URIS
默认: False
启用此设置以要求 https 在注销后,重定向URI。 http 仅在以下情况下允许 Client 是 confidential 。
OIDC_RP_INITIATED_LOGOUT_ACCEPT_EXPIRED_TOKENS
默认: True
RP启动的注销是否接受过期的ID令牌。令牌仍必须由OP签名,否则有效。
OIDC_RP_INITIATED_LOGOUT_DELETE_TOKENS
默认: True
是否删除正在注销的用户的访问、刷新和ID令牌。可使用自定义删除令牌的应用程序类型 RPInitiatedLogoutView.token_types_to_delete 。默认情况下,如果启用此标记,则删除所有应用程序的令牌。
OIDC_ISS_ENDPOINT
默认: ""
在ID令牌JWT中使用并在OIDC发现元数据中通告的颁发者的URL。客户端使用此位置检索OIDC发现元数据 OIDC_ISS_ENDPOINT + /.well-known/openid-configuration 。
如果未设置,则使用默认位置,例如 django-oauth-toolkit 挂载在 /o ,它将会是 <server-address>/o 。
OIDC_RESPONSE_TYPES_SUPPORTED
默认::
[
"code",
"token",
"id_token",
"id_token token",
"code token",
"code id_token",
"code id_token token",
]
播发为此服务器支持的响应类型。
OIDC_SUBJECT_TYPES_SUPPORTED
默认: ["public"]
播发为此服务器支持的主题类型。
OIDC_TOKEN_ENDPOINT_AUTH_METHODS_SUPPORTED
默认: ["client_secret_post", "client_secret_basic"]
播发为此服务器支持的身份验证方法。
CLEAR_EXPIRED_TOKENS_BATCH_SIZE
默认: 10000
所使用的删除批的大小 cleartokens 管理命令。
CLEAR_EXPIRED_TOKENS_BATCH_INTERVAL
默认: 0
使用的睡眠时间(以秒为单位 cleartokens 批删除之间的管理命令。
将其设置为非零值(例如 0.1 )在批大小之间添加暂停,以减少清除大批量过期令牌时的系统负载。
从Django项目导入的设置
USE_TZ
用于确定是否使令牌过期日期时区感知。