跳转到主要内容

JWT携带令牌认证。

项目描述

Beta License: AGPL-3 OCA/server-auth Translate me on Weblate Try me on Runbot

JWT携带令牌认证。

目录

安装

此模块需要安装pyjwt库。

用法

此模块允许开发者在Odoo控制器路由上添加新的jwt认证方法。

要使用它,您必须

  • 创建一个auth.jwt.validator记录来配置如何验证JWT令牌。

  • auth="jwt_{validator-name}"属性添加到您想要保护的路线中,其中{validator-name}对应于JWT验证记录的名称属性。

auth_jwt_demo模块提供了示例。

JWT验证器可以使用以下属性进行配置

  • name: 验证器名称,用于匹配auth="jwt_{validator-name}"路由属性。

  • audience: 允许的受众的逗号分隔列表,用于验证aud声明。

  • issuer: 用于验证iss声明。

  • 签名类型(密钥或公钥)、算法、密钥和JWK URI用于验证令牌签名。

此外,还验证了exp声明以拒绝过期的令牌。

如果缺少、格式不正确或包含无效令牌的Authorization HTTP头,则请求将使用401(未经授权)代码被拒绝。

如果令牌有效,请求将使用配置的用户 ID 执行。默认情况下,用户 ID 选择策略是静态(即对所有请求都相同)并且选定的用户已在 JWT 验证器中配置。可以通过重写 _get_uid() 方法并扩展 user_id_strategy 选择字段来提供其他策略。

选定的用户不会存储在会话中。它仅在 request.uid 中可用(因此它是在 request.env 中使用的)。为了避免令牌与会话之间的任何混淆和不匹配,此模块拒绝使用已认证用户会话发出的请求。

此外,如果配置了 partner_id_strategy,则将搜索合作伙伴,如果找到,则将其 ID 存储在 request.jwt_partner_id 属性中。如果设置了 partner_id_required,则在找不到合作伙伴时返回 401(未授权)。否则,request.jwt_partner_id 将保留为假值。可以通过重写 _get_partner_id() 方法并扩展 partner_id_strategy 选择字段来提供其他策略。

解码的 JWT 有效负载存储在 request.jwt_payload 中。

已知问题 / 路线图

CORS 在 Odoo 14.0 之前存在问题。这意味着在 auth_jwt_demo 中的演示 SPA 不能正常工作。为了使其工作,您需要从与 Odoo 相同的 URL 提供它,或者回滚 https://github.com/odoo/odoo/pull/56029

这也可以通过在 auth_jwt 中检测 CORS 预检请求并在该情况下不需要身份验证来解决。

由于我目前关注 Odoo 14.0,因此这留待以后的工作。

错误跟踪器

错误在 GitHub Issues 上跟踪。如果在遇到麻烦时,请检查是否已报告您的问题。如果您是第一个发现它的人,请通过提供详细和受欢迎的 反馈 来帮助我们。

请不要直接联系贡献者以获取支持或帮助解决技术问题。

致谢

作者

  • ACSONE SA/NV

贡献者

维护者

本模块由 OCA 维护。

Odoo Community Association

OCA,即 Odoo 社区协会,是一个非营利组织,其使命是支持 Odoo 功能的协作开发并推广其广泛使用。

当前 维护者

sbidoul

本模块是 GitHub 上的 OCA/server-auth 项目的组成部分。

欢迎您贡献力量。有关如何贡献的信息,请访问 https://odoo-community.org/page/Contribute

项目详情


下载文件

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

源代码分布

此版本没有可用的源代码分布文件。请参阅有关 生成分发归档 的教程。

构建分布

odoo11_addon_auth_jwt-11.0.1.0.2-py2.py3-none-any.whl (33.8 kB 查看散列值)

上传时间: Python 2 Python 3