扩展北京快三源码开发服务器解决oauth2性能瓶颈

上传人:财迷 文档编号:88541643 上传时间:2019-04-30 格式:DOCX 页数:3 大小:19.32KB
返回 下载 相关 举报
扩展北京快三源码开发服务器解决oauth2性能瓶颈_第1页
第1页 / 共3页
扩展北京快三源码开发服务器解决oauth2性能瓶颈_第2页
第2页 / 共3页
扩展北京快三源码开发服务器解决oauth2性能瓶颈_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《扩展北京快三源码开发服务器解决oauth2性能瓶颈》由会员分享,可在线阅读,更多相关《扩展北京快三源码开发服务器解决oauth2性能瓶颈(3页珍藏版)》请在金锄头文库上搜索。

1、 用户携带北京快三源码开发,需要详情咨询企娥166848365,token 请求资源服务器 资源服务器拦截器 携带token 去认证服务器 调用tokenstore 对token 合法性校验 资源服务器拿到token,默认只会含有用户名信息 通过用户名调用userdetailsservice.loadbyusername 查询用户全部信息详细性能瓶颈分析,请参考上篇文章扩展jwt解决oauth2 性能瓶颈本文是针对传统使用UUID token 的情况进行扩展,提高系统的吞吐率,解决性能瓶颈的问题默认check-token 解析逻辑 RemoteTokenServices 入口Overridep

2、ublic OAuth2Authentication loadAuthentication(String accessToken) throws AuthenticationException, InvalidTokenException MultiValueMap formData = new LinkedMultiValueMap();formData.add(tokenName, accessToken);HttpHeaders headers = new HttpHeaders();headers.set(Authorization, getAuthorizationHeader(cl

3、ientId, clientSecret);/ 调用认证服务器的check-token 接口检查tokenMap map = postForMap(checkTokenEndpointUrl, formData, headers); return tokenConverter.extractAuthentication(map); 解析认证服务器返回的信息DefaultAccessTokenConverterpublic OAuth2Authentication extractAuthentication(Map map) Map parameters = new HashMap();Set

4、scope = extractScope(map);/ 主要是 用户的信息的抽取Authentication user = userTokenConverter.extractAuthentication(map); / 一些oauth2 信息的填充OAuth2Request request = new OAuth2Request(parameters, clientId, authorities, true, scope, resourceIds, null, null,null);return new OAuth2Authentication(request, user); 组装当前用户信

5、息DefaultUserAuthenticationConverterpublic Authentication extractAuthentication(Map map) if (map.containsKey(USERNAME) Object principal = map.get(USERNAME);Collection authorities = getAuthorities(map);if (userDetailsService != null) UserDetails user = userDetailsService.loadUserByUsername(String) map

6、.get(USERNAME);authorities = user.getAuthorities();principal = user;return new UsernamePasswordAuthenticationToken(principal, N/A, authorities);return null;问题分析 认证服务器check-token 返回的全部信息 资源服务器在根据返回信息组装用户信息的时候,只是用了username 如果设置了 userDetailsService 的实现则去调用 loadUserByUsername 再去查询一次用户信息造成问题现象1. 如果设置了use

7、rDetailsService 即可在spring security 上下文获取用户的全部信息,不设置则只能得到用户名。2. 增加了一次查询逻辑,对性能产生不必要的影响解决问题 扩展UserAuthenticationConverter 的解析过程,把认证服务器返回的信息全部组装到spring security的上下文对象中/* * author lengleng * date 2019-03-07 * * 根据checktoken 的结果转化用户信息 */public class PigxUserAuthenticationConverter implements UserAuthentic

8、ationConverter private static final String N_A = N/A; / map 是check-token 返回的全部信息Overridepublic Authentication extractAuthentication(Map map) if (map.containsKey(USERNAME) Collection authorities = getAuthorities(map);String username = (String) map.get(USERNAME);Integer id = (Integer) map.get(Security

9、Constants.DETAILS_USER_ID);Integer deptId = (Integer) map.get(SecurityConstants.DETAILS_DEPT_ID);Integer tenantId = (Integer) map.get(SecurityConstants.DETAILS_TENANT_ID);PigxUser user = new PigxUser(id, deptId, tenantId, username, N_A, true, true, true, true, authorities);return new UsernamePasswor

10、dAuthenticationToken(user, N_A, authorities);return null; 给remoteTokenServices 注入这个实现public class PigxResourceServerConfigurerAdapter extends ResourceServerConfigurerAdapter Overridepublic void configure(ResourceServerSecurityConfigurer resources) DefaultAccessTokenConverter accessTokenConverter = n

11、ew DefaultAccessTokenConverter();UserAuthenticationConverter userTokenConverter = new PigxUserAuthenticationConverter();accessTokenConverter.setUserTokenConverter(userTokenConverter);remoteTokenServices.setRestTemplate(lbRestTemplate);remoteTokenServices.setAccessTokenConverter(accessTokenConverter);resources.tokenServices(remoteTokenServices);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 彩票

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号