JWT携带令牌认证。
项目描述
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 上跟踪。如果在遇到麻烦时,请检查是否已报告您的问题。如果您是第一个发现它的人,请通过提供详细和受欢迎的 反馈 来帮助我们。
请不要直接联系贡献者以获取支持或帮助解决技术问题。
致谢
贡献者
Stéphane Bidoul <stephane.bidoul@acsone.eu>
维护者
本模块由 OCA 维护。
OCA,即 Odoo 社区协会,是一个非营利组织,其使命是支持 Odoo 功能的协作开发并推广其广泛使用。
当前 维护者
本模块是 GitHub 上的 OCA/server-auth 项目的组成部分。
欢迎您贡献力量。有关如何贡献的信息,请访问 https://odoo-community.org/page/Contribute。
项目详情
散列值 for odoo11_addon_auth_jwt-11.0.1.0.2-py2.py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 55d95bd5ec71192211e0d15740a5cc9b05f626a2d7a4c15057df13769b240549 |
|
MD5 | 9ae1c2969b0fbccb0b674ee9984b91ac |
|
BLAKE2b-256 | 56200f85cd75760fa590f379690aa8340d57288352f48d8140dc606ead671af3 |