JWT载体令牌认证。
项目描述
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上跟踪。如果遇到问题,请检查是否已经报告了您的问题。如果您是第一个发现它的人,请帮助我们通过提供详细且受欢迎的反馈来帮助我们。
请不要直接联系贡献者以获取支持或技术问题的帮助。
致谢
贡献者
Stéphane Bidoul <stephane.bidoul@acsone.eu>
维护者
此模块由OCA维护。
OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并促进其广泛使用。
当前维护者
此模块是GitHub上的OCA/server-auth项目的一部分。
欢迎您贡献力量。要了解如何贡献,请访问https://odoo-community.org/page/Contribute。
项目详情
哈希值 for odoo14_addon_auth_jwt-14.0.2.1.2-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 34b5eaad1c033c6c58d5d436685d14ba37d5dffe92b967eb4077031d2d662bb5 |
|
MD5 | 5ee47367b1aa351f3f80014294b65e9a |
|
BLAKE2b-256 | 3f50c4b89aa2e283ac0dbb5b2c89c69d470fb6dde75387e069f79e807ea261d2 |