1 Star 0 Fork 56

oygitee / springboot2-oauth2

forked from knowz / springboot2-oauth2 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

使用springboot2.0和oauth2.0实现单点登录

  1. 存储token使用的是redis,所以需要本地启动一个redis服务
  2. 使用数据库保存客户端信息,所以需要在数据库执行sql脚本
  3. 包含一个认证服务器,一个资源服务器,一个单点登录客户端
  4. 博客地址:https://blog.csdn.net/qq_37170583/article/details/80704660

单点登录流程

  1. 先启动 oauth-server 项目,然后再启动 oauth-client 项目
  2. 输入客户端地址 http://localhost:8085/user 输入图片说明
  3. 进入到认证服务器登录页面 输入图片说明
  4. 登录完成后,自动重定向回客户端地址 输入图片说明

使用 postman 实现 password授权模式

  1. 允许使用password的授权方式
@Configuration
@EnableAuthorizationServer
public class ServerConfig extends AuthorizationServerConfigurerAdapter {
    @Autowired
    private AuthenticationManager authenticationManager;

    @Autowired
    RedisConnectionFactory redisConnectionFactory;

    @Override
    public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
        // 配置token获取和验证时的策略
        security.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()");
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory()
                .withClient("client")
                // secret密码配置从 Spring Security 5.0开始必须以 {加密方式}+加密后的密码 这种格式填写
                /*
                 *   当前版本5新增支持加密方式:
                 *   bcrypt - BCryptPasswordEncoder (Also used for encoding)
                 *   ldap - LdapShaPasswordEncoder
                 *   MD4 - Md4PasswordEncoder
                 *   MD5 - new MessageDigestPasswordEncoder("MD5")
                 *   noop - NoOpPasswordEncoder
                 *   pbkdf2 - Pbkdf2PasswordEncoder
                 *   scrypt - SCryptPasswordEncoder
                 *   SHA-1 - new MessageDigestPasswordEncoder("SHA-1")
                 *   SHA-256 - new MessageDigestPasswordEncoder("SHA-256")
                 *   sha256 - StandardPasswordEncoder
                 */
                .secret("{noop}secret")
                .scopes("all")
                .authorizedGrantTypes("authorization_code", "password", "refresh_token")
                .autoApprove(true);
    }

2.在postman中输入获取token的地址 输入图片说明

3.访问资源服务器的接口,有两种方式

1)作为参数传给后端资源服务器:access_token=68d4a48d-91a3-4e20-9198-cb2b258e9a14

2)作为请求头传给后端资源服务器: 输入图片说明

4.刷新access_token的方式 输入图片说明

5.退出登录

    @Autowired
    @Qualifier("consumerTokenServices")
    ConsumerTokenServices tokenServices;

    @RequestMapping(value = "/auth/logout", method = POST)
    @ResponseBody
    public String logout(HttpServletRequest request) {
        // 从请求头获取前端传过来的token,格式:token_type access_token
        String token = request.getHeader("Authorization");
        // 获取access_token
        token =  token.split(" ")[1];
        // 移除token,使得用户退出登录
        if(tokenServices.revokeToken(token)) {
            return "success";
        }
        return "failed";
    }

空文件

简介

使用springboot2.0和oauth2.0实现单点登录 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/oygitee/springboot2-oauth2.git
git@gitee.com:oygitee/springboot2-oauth2.git
oygitee
springboot2-oauth2
springboot2-oauth2
master

搜索帮助

14c37bed 8189591 565d56ea 8189591