JWT携带令牌认证。
项目描述
JWT携带令牌认证。
目录
安装
此模块需要安装pyjwt库。
使用
此模块允许开发者在Odoo控制器路由上添加新的jwt认证方法。
要使用它,您必须
创建一个auth.jwt.validator记录以配置JWT令牌的验证方式。
将auth="jwt_{validator-name}"或auth="public_or_jwt_{validator-name}"属性添加到您想要保护的路线中,其中{validator-name}对应于JWT验证器记录的name属性。
auth_jwt_demo模块提供了示例。
JWT验证器可以使用以下属性进行配置
name:验证器名称,用于与auth="jwt_{validator-name}"路由属性匹配。
audience:允许的受众列表,用逗号分隔,用于验证aud声明。
issuer:用于验证iss声明。
签名类型(密钥或公钥)、算法、密钥和JWK URI用于验证令牌签名。
此外,还会验证exp声明以拒绝过期令牌。
如果HTTP头中的 Authorization 缺失、格式不正确或包含无效令牌,则请求会被拒绝,返回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 中。
public_auth_jwt 方法在未设置Authorization头时将身份验证委托给标准的Odoo public 方法。如果设置了,则执行上述描述的常规JWT身份验证。此方法对于需要为匿名用户工作的公开端点非常有用,但在知道已验证用户时可以进行增强。一个典型的用例是“添加到购物车”端点,它可以用于匿名用户,但在知道已验证用户时可以绑定到已知的客户。
已知问题/路线图
在Odoo 14.0之前,CORS支持存在问题。这意味着 auth_jwt_demo 中的演示SPA不能直接使用。要使其工作,您需要从与Odoo相同的URL提供服务,或者回滚 https://github.com/odoo/odoo/pull/56029。
也可以通过检测CORS预检请求并在此情况下不要求身份验证来在 auth_jwt 中解决这个问题。
这留待未来工作,因为我的当前重点是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 odoo13_addon_auth_jwt-13.0.1.1.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d535ca9e3fc4ea7de13193bb1c55ec4b9d292c1fcb556a3d0abb124603905153 |
|
MD5 | 6ed4c2c98443c49fddf93855e1b23a38 |
|
BLAKE2b-256 | 2a5abf8f343b6cd46cb7dd8e785da9e1dd42c1cea96c6cdb0bfb7b59f2f9ea42 |