首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在JWT中包含经过身份验证的用户角色?

如何在JWT中包含经过身份验证的用户角色?
EN

Stack Overflow用户
提问于 2020-06-02 07:12:55
回答 1查看 597关注 0票数 3

我已经将CAS配置为OAuth2服务器。成功登录后,返回JWT,但JWT中的roles字段始终为空;

代码语言:javascript
运行
AI代码解释
复制
{
"sub": "dg",
...
"roles": [],
"nonce": "",
"client_id": "first-client",
"credentialType": "UsernamePasswordCredential",
...

}

当我登录时,如何在JWT中获取和放置经过身份验证的用户角色?

这是我的示例服务注册中心;

代码语言:javascript
运行
AI代码解释
复制
{
  "@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService",
  "serviceId" : "http://localhost:8085/.*",
  "name" : "CAS Spring Secured App",
  "description": "This is a Spring App that usses the CAS Server for its authentication",
  "id" : 1,
  "evaluationOrder" : 1,
  "bypassApprovalPrompt": true,
  "jwtAccessToken": true,
  "clientId": "first-client",
  "clientSecret": "noonewilleverguess",
  "supportedGrantTypes": [ "java.util.HashSet", [ "authorization_code" ] ],
  "supportedResponseTypes": [ "java.util.HashSet", [ "code" ] ]
}

谢谢你帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-05 04:26:37

我找到了解决办法。来自中国科学院博客(https://apereo.github.io/2017/02/22/cas51-dbauthn-tutorial/)

如今,

无法直接检索属性作为身份验证的一部分,因此我们需要设置一个单独的属性存储库实例,一旦用户完全通过身份验证,它将与其联系。

因此,我们需要使用属性存储库(它有许多类型,如ldap、jdbc、stub . https://apereo.github.io/cas/development/configuration/Configuration-Properties.html#stub)

我已经为属性存储库配置了jdbc。(postgresql作为数据库)

首先,您需要向build.gradle添加两个依赖项

代码语言:javascript
运行
AI代码解释
复制
compile "org.apereo.cas:cas-server-support-jdbc:${casServerVersion}"
compile "org.apereo.cas:cas-server-support-jdbc-drivers:${casServerVersion}"

然后,创建获取属性的数据库。例如,名为my_roles

代码语言:javascript
运行
AI代码解释
复制
id (serial) | user_name (varchar(50)) | role_name (text[])
----------------------------------------------------------
    1       |       dg                | {'ROLE_READ', 'ROLE_WRITE'}

然后,像这样配置属性存储库

代码语言:javascript
运行
AI代码解释
复制
cas.authn.attribute-repository.jdbc[0].sql=SELECT * FROM my_roles WHERE {0}
cas.authn.attribute-repository.jdbc[0].username=user_name

cas.authn.attribute-repository.jdbc[0].user=postgres
cas.authn.attribute-repository.jdbc[0].password=postgres
cas.authn.attribute-repository.jdbc[0].url=jdbc:postgresql://localhost:5432/customer
cas.authn.attribute-repository.jdbc[0].driverClass=org.postgresql.Driver
cas.authn.attribute-repository.jdbc[0].dialect=org.hibernate.dialect.PostgreSQL95Dialect

最后,不要忘记向服务注册中心添加发布策略。

代码语言:javascript
运行
AI代码解释
复制
{
  ...
  "attributeReleasePolicy" : {
    "@class" : "org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy",
    "allowedAttributes" : [ "java.util.ArrayList", [ "role_name" ] ]
  }
}

因此,这是结果;

代码语言:javascript
运行
AI代码解释
复制
{
  "sub": "dg",
   ...
  "role_name":
  [
    "ROLE_WRITE",
    "ROLE_READ"
  ],
  "aud": "http://localhost:8085/login/oauth2/code/login-client",
  "grant_type": "AUTHORIZATION_CODE",
  ...
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62155196

复制
相关文章
jQuery动态加载select下拉列表「建议收藏」
  以前使用的select下拉列表都是静态的,select 的option数据都是写死的。现在项目中的select需要根据不同的场景使用不同的数据,解决方式就是动态加载option数据。
Java架构师必看
2022/03/14
4.6K0
jQuery 样式操作
jQuery 可以使用 css 方法来修改简单元素样式; 也可以操作类,修改多个样式。
星辰_大海
2020/10/09
1.4K0
jQuery 样式操作
​ jQuery 可以使用 css 方法来修改简单元素样式; 也可以操作类,修改多个样式。
梨涡浅笑
2020/10/27
1.5K0
jquery样式操作
选择器获取的多个元素,获取信息获取的是第一个,比如:$("div").css("width"),获取的是第一个div的width。
Devops海洋的渔夫
2019/05/30
1.7K0
gridview样式模板_css列表样式
<style. type=”text/css”> .GridViewStyle { border-right: 2px solid #A7A6AA; border-bottom: 2px solid #A7A6AA; border-left: 2px solid white; border-top: 2px solid white; padding: 4px; }
全栈程序员站长
2022/09/30
4.2K0
bootstrap 列表list样式
<ul class="list-group"> <li class="list-group-item">免费域名注册</li> <li class="list-group-item">免费 Window 空间托管</li> <li class="list-group-item">图像的数量</li> <li class="list-group-item">24*7 支持</li> <li class="list-group-item">每年更新成本</li> </ul>
用户5760343
2019/07/05
1.7K0
bootstrap 列表list样式
jQuery实现点击添加样式同胞移除样式
效果图 代码 .box { display: flex; } .rol { padding: 15px; border
明知山
2020/09/03
5.8K0
简单jquery写css样式[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。jquery写css样式方法如下:一般要在页面初始化的时候就要加载样式,所以使用ready()方法
全栈程序员站长
2022/08/05
1.8K0
前端基础-JQuery操作样式
第6章 JQuery操作样式 6.1 CSS操作 功能:设置或者修改样式,操作的是style属性。 操作单个样式 // name:需要设置的样式名称 // value:对应的样式值 // $obj.css(name, value); // 使用案例 $('#one').css('background','gray');// 将背景色修改为灰色 设置多个样式 // 参数是一个对象,对象中包含了需要设置的样式名和样式值 // $obj.css(obj); // 使用案例 $('#one').css(
cwl_java
2020/03/26
1.2K0
bootstrap笔记(二)——列表样式和表格样式
table-striped配合 “:nth-child”选择器使用,来改变默认的颜色效果,也称之为隔行变色或斑马线,起到两种不同颜色变化的效果,条纹状态的表格
兮动人
2021/06/11
1.4K0
bootstrap笔记(二)——列表样式和表格样式
JQuery生成图片列表
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>生成图片列表</title> 5 <style type="text/css"> 6 *{ margin: 0px; padding: 0px; } 7 .bpp4{ width: 700px; height: 280px; padding-left: 10px; padding-bottom: 10px; border: 1px solid #333333
彼岸舞
2020/09/30
7.8K0
动态类名和动态样式
给标签添加动态样式 // H5页面中,ios正常显示,但是background样式在andriod机不生效 <div class="img_container" :style="{background:'url('+album.base64Img+')'}"></div> // 改为下面这种写法ios和andriod都可以显示了 <div class="img_container" :style="{background:`url(${encodeURI(album.base64Img)})`}"></d
xyzzz
2021/06/18
1.3K0
jQuery 动态绑定
这是在项目过程中所遇到的一个问题,给 JS 动态生成的元素绑定事件失效,代码如下所示:
Nian糕
2018/08/21
2K0
jQuery 动态绑定
如何动态绑定样式
这个是我想要的页面效果,每个卡片的背景颜色都不一样 image.png 第一次需要动态绑定颜色,发现怎么写都不对。。。众大佬支招终于解决了~ 当遍历出来的每个项都需要不同的样式的时候,按照以下这个格式套进去就可以了 :style = "{'background-color':item.bgc}" image.png 如果样式绑定在遍历的每个项中,也可以通过插槽的方式获取到当行的样式 image.png
xyzzz
2020/11/25
2.2K0
如何动态绑定样式
jQuery(操作Dom-样式操作)
css('styleName','styleVaule'):修改行内样式 隐式迭代
全栈开发日记
2022/05/12
1.2K0
Python列表推导式(多种样式列表推导式)
所谓推导式也就是Python中一种更有风格的Python代码的写法。什么样是有风格的呢?假如有个需求,它可能需要三行五行甚至是更多行代码完成,但是如果是同样的需求用推导式来书写的话很可能一行代码就完成了,所以推导式的作用就是化简代码用的。
python自学网
2022/05/06
5900
Python列表推导式(多种样式列表推导式)
通过样式覆盖修改Tcplayer动态水印样式
效果图: 41102.gif 在线demo 覆盖样式代码: .tcp-dynamic-watermark-container .tcp-dynamic-watermark-content { font-size: 30px; color: red; } 全部demo代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-
良人
2022/04/11
3.1K0
python-docx表格样式列表
python-docx的表格样式如下: 使用方法: table.style='Medium Grid 1 Accent 1' or document.add_table(3,4,style='Medium Grid 1 Accent 1') 表格样式:Normal Table 第1列 第2列 第3列 表格样式:Table Grid 第1列 第2列 第3列 表格样式:Light Shading 第1列 第2列 第3列 表格样式:Light Shading Accen
py3study
2020/01/07
2.2K0
css列表属性和样式控制
如下图是360浏览器主页的内容,上边有导航,下边是新闻列表,这种布局很常见,今天就来学习css列表属性之后并制作它。
呆呆
2021/11/26
1.3K0
css列表属性和样式控制
如下图是360浏览器主页的内容,上边有导航,下边是新闻列表,这种布局很常见,今天就来学习css列表属性之后并制作它。
呆呆
2021/09/29
1.1K0

相似问题

如何将自定义维度添加到服务器端GTM容器中的Universal标记中,该容器接收来自GA4标记的点击率?

13

GTM GA4配置标记阻止UA GTM标记

17

引导<article>标记中的“容器”

14

“覆盖组合”来自不同的容器?

10

元素位于容器的底部,该元素不覆盖容器中的文本

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文