跳转到主要内容

JWT载体令牌认证。

项目描述

Beta License: LGPL-3 OCA/server-auth Translate me on Weblate Try me on Runboat

JWT载体令牌认证。

目录

安装

此模块需要安装pyjwt库。

用法

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

要使用它,您必须

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

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

auth_jwt_demo模块提供了示例。

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

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

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

  • issuer:用于验证iss声明。

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

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

如果HTTP头中缺少Authorization、格式不正确或包含无效的令牌,则请求将被拒绝,返回401(未授权)状态码,除非启用cookie模式(见下文)。

如果令牌有效,则请求将以配置的用户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中。

当Authorization头未设置时,public_auth_jwt方法将身份验证委托给标准的Odoo public 方法。如果设置了,则执行如上所述的常规JWT身份验证。此方法对于需要为匿名用户工作的公共端点很有用,但当知道已认证用户时可以增强。一个典型的用例是“添加到购物车”端点,它可以对匿名用户工作,但当知道认证用户时可以增强,将其绑定到已知客户。

您可以在JWT验证器上启用cookie模式。在这种情况下,从Authorization头获得的JWT有效负载作为Http-Only cookie返回。对于前端应用程序来说,这种模式有时更简单,因为它们不需要在请求之间存储和保护JWT令牌,只需依赖浏览器的cookie管理机制即可。当同时提供Authorization头和cookie时,cookie将被忽略,以便客户端可以通过提供新的JWT令牌通过不同的用户进行认证。

错误追踪器

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

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

致谢

作者

  • ACSONE SA/NV

贡献者

维护者

此模块由OCA维护。

Odoo Community Association

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

当前维护者

sbidoul

此模块是GitHub上的OCA/server-auth项目的一部分。

欢迎您贡献力量。要了解如何贡献,请访问https://odoo-community.org/page/Contribute

项目详情


下载文件

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

源代码分发

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

构建分发

odoo14_addon_auth_jwt-14.0.2.1.2-py3-none-any.whl (39.7 kB 查看哈希值)

上传时间 Python 3

由以下机构支持