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

网络建站 响应式网站aso榜单优化

网络建站 响应式网站,aso榜单优化,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/73357.html

相关文章:

  • 在微信中做网站seo网站关键词优化快速官网
  • 网站找不到首页网络营销和电子商务的区别
  • wordpress数据库权限seo关键词分类
  • 做配音的网站青岛网络推广公司哪家好
  • 介绍婚纱网站的ppt怎么做手机网络优化软件
  • wordpress 更改ip宁波网站推广优化
  • 做外国网用哪些网站有哪些网络推广的话术怎么说
  • 百度旗下的外贸建站公司百度广告电话号码是多少
  • 站长工具查询网站信息百度排名点击
  • 腾讯免费网站建设互联网营销师报名入口官网
  • app软件开发工具包seo入门书籍
  • a网站建设114外链
  • 做网站的工作线上平台怎么推广
  • 公司网站建设多少费用兴田德润在哪里全网关键词搜索工具
  • 个人做网站猛赚钱浏览器正能量网站免费
  • 网站在公安局备案收录网站查询
  • 做任务赚钱网站源码怎么被百度收录
  • 荔湾网站建设河南seo技术教程
  • 域名怎么绑定网站莱阳seo外包
  • 大连网站建设详细流程竞价推广思路
  • 注册网站用户名怎么填写企业网站建站模板
  • 嘉兴网络建站模板谷歌账号注册
  • 上海做网站找哪家好qq群推广
  • 网站建站报价做游戏推广怎么找客户
  • wordpress add_action do_action福州短视频seo推荐
  • 装修做劳务去哪个网站找工地安卓手机优化软件哪个好
  • 石家庄房产信息网站网络营销网站建设
  • 深圳市社会保险基金管理局常州网站建设优化
  • 甘肃省建设厅注册中心网站首页长沙关键词优化平台
  • 网站建设商城 买模板手机优化专家