首页 > 其他分享 >分布式认证授权(四)

分布式认证授权(四)

时间:2022-10-01 10:39:27浏览次数:47  
标签:OAuth2ExceptionJackson2Deserializer 认证 member MengxueguResult 服务器 scope 授权 entit

  • ​客户端请求资源服务器​
# 配置类添加注解@EnableOAuth2Sso

# 注入
@Bean
public OAuth2RestTemplate oAuth2RestTemplate(UserInfoRestTemplateFactory factory) {
return factory.getUserInfoRestTemplate();
}

# 控制层注入
@Autowired
private OAuth2RestTemplate oAuth2RestTemplate;

# 方式1
@GetMapping("/member")
public String member() {
// 方式1,直接访问资源服务器
//MengxueguResult entity = oAuth2RestTemplate.getForObject("http://localhost:8080/product/list", MengxueguResult.class);
System.out.println("body: " + entity);
return "member";
}
  • 测试:启动服务注册模块、网关、认证服务器、资源服务器、客户端1
# 浏览器打开
http://localhost:9001/

# 访问/member接口,报错如下
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri Jul 01 15:03:45 GMT+08:00 2022
There was an unexpected error (type=Internal Server Error, status=500).
Insufficient scope for this resource
error="insufficient_scope", error_description="Insufficient scope for this resource", scope="all"

# 错误原因:在资源服务器的配置类中指定了访问接口需要all的权限标识
.antMatchers("/**").access("#oauth2.hasScope('all')")

# 解决方案:在数据库中为客户端1添加all的权限标识

分布式认证授权(四)_java

  • 再次测试,测试成功
# 控制台打印
15:06:23.029 INFO 11292 --- [)-192.168.137.1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
body: MengxueguResult(code=200, message=OK, data=[眼镜, 格子衬衣, 双肩包])
  • 方式2:通过网关访问资源服务器
@GetMapping("/member")
public String member() {
// 方式2,通过网关
ResponseEntity<MengxueguResult> entity = oAuth2RestTemplate.getForEntity("http://localhost:7001/product/list", MengxueguResult.class);
System.out.println("body: " + entity);
return "member";
}

# 控制台报错如下
org.springframework.security.oauth2.common.exceptions.InsufficientScopeException: Insufficient scope for this resource
at org.springframework.security.oauth2.common.exceptions.OAuth2ExceptionJackson2Deserializer.deserialize(OAuth2ExceptionJackson2Deserializer.java:112)
at org.springframework.security.oauth2.common.exceptions.OAuth2ExceptionJackson2Deserializer.deserialize(OAuth2ExceptionJackson2Deserializer.java:33)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3258)

# 错误原因:在网关的ResourceServerConfig配置类中配置了,访问资源服务器需要有服务器id标识
public static final String RESOURCE_ID = "product-server";
public static final String AUTH_ID = "auth-server";

# 解决方案:在数据库中为客户端1添加服务器id标识

分布式认证授权(四)_2d_02

  • 再次测试,测试成功
# 控制台打印
5:18:19.801 INFO 5064 --- [)-192.168.137.1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
body: <200,MengxueguResult(code=200, message=OK, data=[眼镜, 格子衬衣, 双肩包]),[Vary:"Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers", Date:"Fri, 01 Jul 2022 07:18:34 GMT", Keep-Alive:"timeout=60", X-Content-Type-Options:"nosniff", X-XSS-Protection:"1; mode=block", Cache-Control:"no-cache, no-store, max-age=0, must-revalidate", Pragma:"no-cache", Expires:"0", X-Frame-Options:"DENY", Content-Type:"application/json", Transfer-Encoding:"chunked", Connection:"keep-alive"]>



标签:OAuth2ExceptionJackson2Deserializer,认证,member,MengxueguResult,服务器,scope,授权,entit
From: https://blog.51cto.com/chniny/5728127

相关文章

  • 我们一起聊聊分布式数据服务
    MySQL本身不是分布式系统,其支持的数据复制技术,本质上是为了数据容灾使用,但目前基于主从复制进行读写分离,减少单机的读压力。目标数据存储资源是系统中最重要的组成部分,数据......
  • 【笔记】并行与分布式-进程组织与交互
    非分布式下的线程分析:举一个案例:发送一个request需要2ms,I/O延迟8ms。-单线程处理:process100requestspersecond.-2线程处理:process125requestspersecond.(原因:双......
  • 如何获取Citrix授权?
    我们聊到关于CitrixSD-WAN的问题,那当我们拿到一台SD-WAN设备时,第一步要做的就是激活设备,那就跟着小壳一起来看看如何获取Citrix设备的授权。一、账号注册 首先登录htt......
  • java mail实现POP3协议收件的Oauth认证
    1.背景   有team使用了office365的国际版邮箱进行收发邮件,但是微软会在十月一后关闭基本身份认证,选择使用OAuth身份验证连接IMAP、POP或SMTP协议,微软给出了相......
  • 福禄克DSX2-5000ch网线认证测试仪为您规避布线错误
    虽然安装、测试和认证网络布线设备的聪明人知道满足标准性能参数和确保应用程序支持的重要性,但即使是我们中最优秀的人也可能犯错误,对底线和客户满意度产生不利影响。让我们......
  • 01.OB分布式架构高级技术
    一:OB聚合资源的物理表示 二:OB聚合资源的逻辑表示 三:OB资源的分配流程    四:资源管理相关操作:资源单元  ......
  • Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。
    系列目录:本系列分为项目集成、项目部署、架构演进三个方向,后续会根据情况调整文章目录。开源地址:​​https://github.com/cyq1162/Taurus.MVC​​本系列第一篇:​​Taurus.MV......
  • 授权协议
    KindEditor商业授权协议 KindEditor由KindEditor开发团队独立开发,源代码的版权归KindEditor开发团队所有,官方网站网址为http://www.kindsoft.net/。 未经商业......
  • Go中使用应用层传输安全(ALTS)的gRPC认证概述。
    ALTS认证Go中使用应用层传输安全(ALTS)的gRPC认证概述。概述应用层传输安全(ALTS)是由Google开发的相互认证和传输加密系统。它用于保护Google基础设施内的RPC通信的安......
  • Docker MySql8 创建、删除、授权用户
    目录DockerMySql8创建、删除、授权用户1、登录MySql82、用户操作2.1、查看用户2.2、创建本地用户2.3、创建外网可访问用户2.4、修改用户2.5、删除用户3、操作用户权限3.1......