
[英]Using JSON Web Token (JWT) for both Authentication and Authorization
[英]Boundaries of using Claims in the authorization JWT token OAuth2+OIDC
我们的主要产品是Public API。 我们使用 IdentityServer4 对我们的用户进行身份验证和授权。 现在,我正在与我的队友讨论可以在令牌中声明的信息的数量和类型。 例如,通常我们在声明中添加用户标识符和用户组织的标识符。 另外,我们添加用户的配置,例如
有一个选项 - 在 JWT 令牌中仅保留用户标识符并请求 API 方法中的所有配置属性。 从我的角度来看,在声明中保留配置的主要优点是减少对其他服务和数据库的请求。
也许,关于我的问题的最佳实践来自可靠来源,甚至在 RFC 中,声明中的信息可以是什么?
没有 RFC 或标准可以说明哪些信息可以在声明中结束,哪些不能。 我会尽量遵守这些准则:
尽量使令牌中的信息尽可能少。 不要仅仅因为一项服务会不时需要它而将某些东西放在索赔中。 仅放置大多数服务一直使用的那些声明,或需要由授权服务器声明的信息。 其他数据通常属于微服务本身,或者可以通过 API 调用轻松获取。 如果您使用 Internet 上公开的 JWT,这一点尤其重要,因为任何人都可以阅读这些信息。
尽量不要将个人身份信息放入 JWT 中,尤其是在令牌公开可用的情况下。 当有人窃取此类令牌时,他们将能够读取您用户的 PII。 如果您需要令牌中的此类信息,请考虑使用Phantom Token模式。 这样,信息就不会被窃听。
通过限制令牌中的声明数量,您还可以限制令牌的权限。 最好拥有权限较低的令牌,并在需要更多信息或权限时使用令牌交换。
请记住,令牌中的声明是授权服务器和消费者(通常是 API)之间的合同。 向令牌添加内容后,通常无法将其删除,因为这将构成重大更改。
看看我们在 Curity 写的这些文章,以获得更多关于处理索赔和 JWT 的知识:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.