设置

我们的配置都是在 OAUTH2_PROVIDER 设置,但 OAUTH2_PROVIDER_APPLICATION_MODELOAUTH2_PROVIDER_ACCESS_TOKEN_MODELOAUTH2_PROVIDER_GRANT_MODELOAUTH2_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 )。

AUTHORIZATION_CODE_EXPIRE_SECONDS

默认: 60

授权码保持有效的秒数。在此持续时间之后请求访问令牌将失败。 RFC6749 Section 4.1.2 建议在较短的生存期后过期,10分钟(600秒)是可接受的最大值。

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 管理命令。检查 清算令牌 管理命令以了解更多信息。可以是一个 Intdatetime.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 PracticeAuthorization Code Grant

  • 公共客户端必须使用PKCE RFC7636

  • 对于机密客户端,使用PKCE RFC7636 是推荐的。

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 仅在以下情况下允许 Clientconfidential

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

用于确定是否使令牌过期日期时区感知。