从 JWT 令牌中删除角色信息

Posted

技术标签:

【中文标题】从 JWT 令牌中删除角色信息【英文标题】:Remove Roles Information from JWT token 【发布时间】:2020-01-03 12:11:18 【问题描述】:

我正在使用 keycloak 对应用程序进行身份验证。我想从 keycloak 生成的 JWT 令牌中删除领域访问权限。

    拥有领域访问(角色)离子 JWT 令牌是一种不好的做法吗? 有没有办法从 keycloak 服务生成的 JWT 令牌中删除领域访问权限?

【问题讨论】:

【参考方案1】:

    我可能错了,但我不认为这是一种不好的做法,因为令牌已签名。客户端将无法在不知道您的秘密的情况下更改令牌有效负载的内容(令牌签名将是错误的)。请务必检查令牌的有效性。

    如果您想更改令牌中提供的信息,您应该查看“客户端范围”部分。

从那里,您将能够更改 jwt 令牌的内容。

【讨论】:

我试过这个。但是我的令牌没有通过 keycloak 服务进行验证。你能建议一下吗?得到这个RPT (Requesting Party Token) is not active, this response is returned instead: "active": false 我回答了2个问题。我认为这是另一个问题。不幸的是,如果看不到您的配置,就很难知道什么是错误配置的。对不起。 我将配置更改为不在 JWT 令牌中包含领域访问权限。有没有其他东西要随之改变?【参考方案2】:

我认为,这取决于您的软件边界或环境中存在的安全策略。我们有一个项目,JWT 令牌中的现有用户或客户端角色给安全分析师带来了一个重大安全问题,尽管我们已经在其他关键环境中多次启动它。 顺便说一句,一些软件框架通过使用 JWT 内部的角色来执行一些主动授权检查,因此对于这类系统,它们强制基于他们的安全设计。 总结一下,

尝试询问您部署环境的安全分析师 它。

【讨论】:

以上是关于从 JWT 令牌中删除角色信息的主要内容,如果未能解决你的问题,请参考以下文章

MSAL Angular:如何从 JWT 令牌中检索用户角色?

Spring Security 检查外部 JWT 角色

Keycloak - 在 JWT 令牌中接收帐户服务角色,但需要自定义角色

OAuth 访问令牌是不是包含 JWT 令牌之类的角色

Spring过滤器将角色添加到来自令牌的请求

从 Javascript 中的 JWT 中提取“角色”