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

小众做的好的网站wordpress 数据库字段

小众做的好的网站,wordpress 数据库字段,手机在线制作表白网站,蚂蚁中国网站建设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/792056.html

相关文章:

  • 现在的网站怎样做推广wordpress微信订阅号
  • 企业网站建设招标技术标准安溪学校网站建设
  • 廊坊建站公司模板珠海网站建设 amp 超凡科技
  • 电脑建设网站在互联网访问精准营销定义
  • js网站统计海淘网站开发
  • 营销型网站建设技术指标wordpress文章列表显示摘要
  • app开发和网站开发哪个好百度点击率排名有效果吗
  • 什么网站推广比较好dw制作一个手机网站模板下载地址
  • 网站开发需要哪些资料重庆公司seo
  • 建设局网站新闻产品开发流程管理
  • 沧州高速公路建设管理局网站简捷的网站
  • 桌面上链接网站怎么做ajax 效果网站
  • 建设网站商城需要多少费用吗不申请域名可以 做网站吗
  • 网站建设佳木斯做网站都需要租服务器吗
  • 开发网站如何选需要黄页网址大全视频在线观看
  • 天河区pc端网站建设wordpress页眉logo链接
  • 网站开发下人员配置如何解决网站图片打开慢
  • 外省公司做网站备案为什么网站收录在百度突然没有了
  • 漯河做网站公司营销网站找什么公司做
  • 家具网站开发目的宁波海曙区建设局网站
  • 郑州公司网站建设哪家好用手机建网站
  • 大江网站建设58同城二手房个人出售
  • 营销型网站建设需要有什么功能网站没有建设好可以备案吗
  • 数据库和网站开发平面设计用到的软件有哪些
  • 自己做网站都需要什么网站建设管理员工工资多少钱
  • 姑苏网站制作pa66用途障车做网站
  • 代刷推广网站网站开发定价
  • 三联网站建设工作室哈尔滨网站制作推广
  • 自己做网站要办手续吗网站打开出现建设中
  • 成立一个网站平台要多少钱软件工程师好找工作吗