Spring Cloud Security系列教程一:入门

栏目: 后端 · 发布时间: 7年前

内容简介:Spring Cloud Security系列教程一:入门

本篇有一定的学习曲线,建议先花一点时间了解一下前置知识:

熟悉以上前置知识后,我们进入Spring Cloud Security的学习。在本例中,我们来使用GitHub的账号和密码来登录我们编写的应用。

准备工作

(1) 前往 https://github.com/settings/developers ,点击“Register a new application”按钮,添加一个应用。点击按钮后,界面如下图所示。

Spring Cloud Security系列教程一:入门

(2) 点击“Register application”按钮,即可出现如下图的界面。

Spring Cloud Security系列教程一:入门

记住这边的Client ID以及Client Secret,后面有用。

至此,准备工作就完成了。

编码

在这里,我们正式进行编码。

(1) 创建项目,并添加以下依赖:

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.2.RELEASE</version>
	<relativePath/>
</parent>
<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-oauth2</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-security</artifactId>
	</dependency>
</dependencies>
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>Camden.SR5</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

即:为应用添加spring-cloud-starter-oauth2、spring-cloud-starter-security两个依赖。

(2) 编写启动类:

@SpringBootApplication
@RestController
public classSecurityApplication{
    publicstaticvoidmain(String[] args){
        SpringApplication.run(SecurityApplication.class, args);
    }

    @GetMapping("/welcome")
    publicStringwelcome(){
        return "welcome";
    }

    @RequestMapping("/user")
    publicPrincipaluser(Principal user){
        return user;
    }

    @Component
    @EnableOAuth2Sso // 实现基于OAuth2的单点登录,建议跟踪进代码阅读以下该注解的注释,很有用
    public static classSecurityConfigurationextendsWebSecurityConfigurerAdapter{
        @Override
        publicvoidconfigure(HttpSecurity http)throwsException{
            http.
                    antMatcher("/**")
                    // 所有请求都得经过认证和授权
                    .authorizeRequests().anyRequest().authenticated()
                    .and().authorizeRequests().antMatchers("/","/anon").permitAll()
                    .and()
                    // 这里之所以要禁用csrf,是为了方便。
                    // 否则,退出链接必须要发送一个post请求,请求还得带csrf token
                    // 那样我还得写一个界面,发送post请求
                    .csrf().disable()
                    // 退出的URL是/logout
                    .logout().logoutUrl("/logout").permitAll()
                    // 退出成功后,跳转到/路径。
                    .logoutSuccessUrl("/");
        }
    }
}

如代码所示,在这里,我们使用 @EnableOAuth2Sso 注解,启用了“基于OAuth2的单点登录”,做了一些安全配置;同时,还定义了两个端点, /welcome 端点返回“welcome”字符串, /user 端点返回当前登录用户的认证信息。

这里说明一下, @EnableOAuth2Sso 注解。如果 WebSecurityConfigurerAdapter 类上注释了 @EnableOAuth2Sso 注解,那么将会添加身份验证过滤器和身份验证入口。

  • 如果只有一个 @EnableOAuth2Sso 注解没有编写在 WebSecurityConfigurerAdapter 上,那么它将会为所有路径启用安全,并且会在基于HTTP Basic认证的安全链之前被添加。
  • 详见 @EnableOAuth2Sso 的注释。

(3) 编写配置文件

server:
 port: 8080
security:
 user:
 password: user  # 直接登录时的密码
 ignored: /
 sessions: never   # session策略

 oauth2:
 sso:
 loginPath: /login   # 登录路径
 client:
 clientId: 你的clientId
 clientSecret: 你的clientSecret
 accessTokenUri: https://github.com/login/oauth/access_token
 userAuthorizationUri: https://github.com/login/oauth/authorize
 resource:
 userInfoUri: https://api.github.com/user
 preferTokenInfo: false

配置文件中的地址可参考该文档来配置: https://developer.github.com/v3/oauth/

这样,代码就编写完成了。

测试

(1) 启动应用。

(2) 访问 http://localhost:8080/login ,将会跳转到GitHub,进行认证。

(3) 认证通过后,访问 http://localhost:8080/user ,可看到当前用户的信息。

(4) 访问 http://localhost:8080/logout ,可正常退出应用。

配套代码

(1) https://github.com/itmuch/spring-cloud-security-samples/tree/master/security-1

(2) http://git.oschina.net/itmuch/spring-cloud-security-samples/tree/master/security-1

版权说明

本文采用 CC BY 3.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

SQL基础教程

SQL基础教程

MICK / 孙淼、罗勇 / 人民邮电出版社 / 2017-6-1 / CNY 79.00

本书是畅销书《SQL基础教程》第2版,介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高编程能力。每章结尾设置有练习题,帮助读者检验对各章内容的理解程度。另外,本书还将重要知识点总结为“法则”,方便读者随时查阅。第2版除了将示例程序更新为对应新版本的DB的SQL之外,还新增了一......一起来看看 《SQL基础教程》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具