springcloud整合Oauth2自定义登录/登出接口
2023-12-13 04:00:08
我使用的是password模式,并配置了token模式
一、登录 (这里我使用的示例是用户名密码认证方式)
1.? Oath2提供默认登录授权接口?
org.springframework.security.oauth2.provider.endpoint.postAccess;
Tokenpublic?ResponseEntity<OAuth2AccessToken> postAccessToken( Principal principal, @RequestParam Map<String, String> parameters);
入参: principal,parameters
1. principal:代表的是认证信息
2.parameters:携带信息
这里直接用UsernamePasswordAuthenticationToken生成凭证并构造出需要的参数
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken("c1","secret",authorities);
HashMap<String, String> param= new HashMap<>(); param.put("grant_type","password"); param.put("username",user.getUsername()); param.put("password",user.getPassword()); usernamePasswordAuthenticationToken.setDetails(param); tokenEndpoint.postAccessToken(usernamePasswordAuthenticationToken, stringHashMap)
在postAccessToken方法中
TokenRequest tokenRequest = getOAuth2RequestFactory().createTokenRequest(parameters, authenticatedClient);
就是根据传入的param和token进行构造。
OAuth2AccessToken token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest);
根据tokenRequest去生成token
到这里token就会生成完毕。
二、登出
String access = tokenObj.get("accessToken"); String refresh = tokenObj.get("refreshToken"); OAuth2AccessToken accessToken = tokenStore.readAccessToken(access); OAuth2RefreshToken refreshToken = tokenStore.readRefreshToken(refresh); tokenStore.removeRefreshToken(refreshToken); tokenStore.removeAccessToken(accessToken);
自定义登出接口,然后传入token和刷新token利用tokenStore进行删除即可。
Oauth2 有许多的坑需要去填,如果有需要请留言,我会出一期完整博客记录Oauth2认证与授权
文章来源:https://blog.csdn.net/wangxulei123/article/details/134818306
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!