config-server/client 简单接入 spring-boot-starter-security

14 篇文章 0 订阅
14 篇文章 0 订阅

由于配置中心内容比较敏感,所以结合spring security实现安全保护。

首先改造config-server,在pom文件里引入spring-boot-starter-security:

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>

启动后,可以观察到:

2019-04-14 16:54:26.568  INFO 31260 --- [           main] .s.s.UserDetailsServiceAutoConfiguration : 

Using generated security password: 36c88ee0-8e4f-47af-b7bd-90c1953e3400

这是因为没有指定用户密码,那么,在application.yml中指定账户密码如下:

spring:
  security:
    user:
      name: user
      password: 3be35cbe-4cbe-4ab2-87d6-ee3b1f59ad5a

再次启动,访问接口:

  • curl http://127.0.0.1:7001/didispace/prod/ 报错Unauthorized

  • curl http://127.0.0.1:7001/didispace/prod/ --user user:3be35cbe-4cbe-4ab2-87d6-ee3b1f59ad5a -v 可以获得配置信息

RdeMacBook-Pro:config-server r$ curl http://127.0.0.1:7001/didispace/prod/
{"timestamp":"2019-04-14T08:56:25.014+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/didispace/prod/"}RdeMacBook-Pro:config-server r$ 
RdeMacBook-Pro:config-server r$ 
RdeMacBook-Pro:config-server r$ curl http://127.0.0.1:7001/didispace/prod/ --user user:3be35cbe-4cbe-4ab2-87d6-ee3b1f59ad5a -v
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 7001 (#0)
* Server auth using Basic with user 'user'
> GET /didispace/prod/ HTTP/1.1
> Host: 127.0.0.1:7001
> Authorization: Basic dXNlcjozYmUzNWNiZS00Y2JlLTRhYjItODdkNi1lZTNiMWY1OWFkNWE=
> User-Agent: curl/7.63.0
> Accept: */*
> 
< HTTP/1.1 200 
< Set-Cookie: JSESSIONID=B0B000C4FD35C184466451D5E8B5AF3A; Path=/; HttpOnly
< 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;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Sun, 14 Apr 2019 08:56:40 GMT
< 
* Connection #0 to host 127.0.0.1 left intact
{"name":"didispace","profiles":["prod"],"label":null,"version":"c9a668d1cf75d7bd5c27f0884214c61b8e0f5c6a","state":null,"propertySources":[{"name":"https://github.com/stringhuang/SpringCloud-Learning.git/spring_cloud_in_action/config-repo/didispace-prod.properties","source":{"from":"git-prod-1.0"}},{"name":"https://github.com/stringhuang/SpringCloud-Learning.git/spring_cloud_in_action/config-repo/didispace.properties","source":{"from":"git-default-1.0"}}]}RdeMacBook-Pro:config-server r$ 
RdeMacBook-Pro:config-server r$ 

那么,对于config-client,需要在bootstrap.properties中引入如下内容:

spring.cloud.config.username=user
spring.cloud.config.password=3be35cbe-4cbe-4ab2-87d6-ee3b1f59ad5a

否则,启动的时候,不会"located property source"

 

运行:

RdeMacBook-Pro:config-server r$ curl http://127.0.0.1:7002/fromEnv/ 
git-prod-2.0
RdeMacBook-Pro:config-server r$ 

 

在Spring Boot中,使用`spring-boot-starter-oauth2-client`配置`SecurityFilterChain`可以实现OAuth2客户端的认证和授权功能。下面是配置`SecurityFilterChain`的步骤: 1. 首先,在`application.properties`或`application.yml`文件中配置OAuth2客户端的相关属性,例如: ``` spring.security.oauth2.client.registration.<client-id>.client-id=<client-id> spring.security.oauth2.client.registration.<client-id>.client-secret=<client-secret> spring.security.oauth2.client.registration.<client-id>.redirect-uri=<redirect-uri> spring.security.oauth2.client.registration.<client-id>.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.<client-id>.scope=<scope> spring.security.oauth2.client.provider.<provider-id>.authorization-uri=<authorization-uri> spring.security.oauth2.client.provider.<provider-id>.token-uri=<token-uri> spring.security.oauth2.client.provider.<provider-id>.user-info-uri=<user-info-uri> ``` 2. 创建一个`@Configuration`类,并使用`@EnableWebSecurity`注解启用Web安全功能。 3. 在该配置类中,创建一个实现`SecurityFilterChain`接口的`@Bean`方法,并使用`HttpSecurity`对象进行配置,例如: ```java @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests(authorizeRequests -> authorizeRequests .antMatchers("/login").permitAll() .anyRequest().authenticated() ) .oauth2Login(); return http.build(); } } ``` 4. 在上述配置中,使用`authorizeRequests`方法配置请求的授权规则,例如使用`antMatchers`方法指定某些URL的访问权限,使用`anyRequest`方法指定其他请求的访问权限。 5. 使用`oauth2Login`方法启用OAuth2登录功能,该方法会自动配置OAuth2客户端的登录流程。 6. 最后,将上述配置类添加到Spring Boot应用程序的启动类上,例如: ```java @SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值