当前位置: 首页 > wzjs >正文

网络建站 响应式网站理发美发培训学校

网络建站 响应式网站,理发美发培训学校,会计题库网站怎么做,做网站开发需要什么证书1、场景 最近照着《Spring Security实战》学习,学到第18章,使用Keycloak作为授权服务器,使用 org.springframework.boot:spring-boot-starter-oauth2-resource-server 实现资源服务器,调用资源服务器的接口返回403,具…

1、场景

最近照着《Spring Security实战》学习,学到第18章,使用Keycloak作为授权服务器,使用

org.springframework.boot:spring-boot-starter-oauth2-resource-server

 实现资源服务器,调用资源服务器的接口返回403,具体错误信息如下:

WWW-Authenticate: Bearer error="insufficient_scope", error_description="The request requires higher privileges than provided by the access token.", error_uri="https://tools.ietf.org/html/rfc6750#section-3.1"

 那就检查scope吧

2、检查scope

2.1 查看access_token(JWK)

到这个网址查看明文的令牌:JSON Web Tokens - jwt.io

看看 scope 都有哪些值。

2.2 资源服务配置

    @Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http.authorizeHttpRequests(authorize -> authorize
//                        .requestMatchers(HttpMethod.POST, "/workout/").hasAuthority("SCOPE_fitnessapp").requestMatchers(HttpMethod.POST, "/workout/").access(hasScope("fitnessapp")).requestMatchers(HttpMethod.DELETE, "/**").hasAuthority("fitnessadmin").anyRequest().authenticated()).oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()));return http.build();}

上一步看到 scope 包含 fitnessapp,那就设置 

access(hasScope("fitnessapp"))

注:实际上资源服务器不设置 scope 也是可以的,因为根本原因不在 scope!!!

3、根本原因以及解决办法

3.1 开启 Spring Security 的日志

在 application.yml 添加配置:

logging:level:org.springframework.security: DEBUG 

再次调用接口,发现这样一段信息:

ExpressionAuthorizationDecision [granted=false, expressionAttribute=#workout.user == authentication.name] 

出问题的代码就是下面这个方法:

@PreAuthorize("#workout.user == authentication.name")
public void saveWorkout(Workout workout) {workoutRepository.save(workout);
}

于是打印看认证后获取的用户名

String name = SecurityContextHolder.getContext().getAuthentication().getName();
System.out.println("###  authentication.name=" + name);

 果然,name不是预期的用户名,而是一段UUID字符串,问DeepSeek这是怎么回事,接着再细看JWK的明文,name 就是token中的 sub 字段的值。

3.2 解决办法

登录Keycloak控制台添加映射器,Client scopes -> fitnessapp -> Mappers

 

 

 

然后重新获取token,看看 sub 字段的值是不是对应的用户名,是的话就没问题了。

最后使用新的token重新调用资源服务器接口,返回200,调用成功!

 

http://www.dtcms.com/wzjs/442853.html

相关文章:

  • 自媒体网站建设谷歌google地图
  • 美国fbaseo怎么做优化排名
  • 免费的行情网站app软件大全seo搜索铺文章
  • 广告联盟没网站可以做吗网络营销的六个特点
  • 微网站建设应该怎么开发票河南网站关键词优化
  • 小工厂怎么做网站建立网站平台
  • php做网站一般用什么软件seo关键词查询排名软件
  • 做理财网站 程序员 违法吗会计培训班要多少钱
  • 征婚网站做原油东莞网站推广企业
  • 信息服务平台网站谷歌seo是指什么意思
  • 网站制作公司 全贵州排名seo公司哪家好
  • hbulider 做网站互联网营销是干什么
  • owasp+网站开发综合性b2b电子商务平台网站
  • 什么是静态网站南宁百度关键词优化
  • 聚美优品网站建设网络热词2021
  • 百度云盘资源搜索优势的seo网站优化排名
  • 做网站交付标准seo搜索引擎推广
  • 江西百度推广公司免费seo提交工具
  • 怎么申请做网站网页制作模板的网站
  • 网站如何悬挂备案号三亚百度推广公司
  • dw6做网站深圳品牌seo
  • cms建站系统 下载百度推广产品有哪些
  • 广州网站制作开发北京seo顾问服务公司
  • 做动画网站市场调研报告怎么写的
  • 做药品的电商网站有哪些辽宁网站建设
  • 中企动力做网站贵吗深圳网站制作推广
  • 如何做政府网站seo品牌优化整站优化
  • 做网站的资料推广普通话的手抄报
  • 微信视频网站建设多少钱seo外链收录
  • 商户如何做h5商城网站是什么意思网络营销主要学什么