spring cloud集成springsecurity

参考github上yjmyzz的开源项目

新建三个项目:

  • demo-server 服务端做security验证
  • demo-client 客户端使用feign调用server端接口
  • demo-gateway 网关层访问server端接口

1、demo-server项目:

  • 1.1、pom.xml引入如下依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
  • 1.2、application.yml加入如下配置:

security:
  basic:
    enabled: true
  user:
    name: app01
    password: passwd01
  • 1.3、启动工程后访问接口会出现下图:

2、demo-client项目:

  • 2.1、feignclient客户端加入BasicAuth授权信息:

@FeignClient(value = "demo-server", configuration = BasicAuthConfiguration.class)
public interface SimpleClient {
}
  • 2.2、BasicAuthConfiguration类如下

import feign.auth.BasicAuthRequestInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BasicAuthConfiguration {
    @Bean
    public BasicAuthRequestInterceptor basicAuthorizationInterceptor() {
        return new BasicAuthRequestInterceptor("app01", "passwd01");
    }
}
  • 2.3、启动demo-client,调用demo-server接口能正常调通


3、demo-gateway网关项目:

  • 3.1、新建AccessFilter extends ZuulFilter,在run方法里加入Authorization的授权信息:

 public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        //添加Basic Auth认证信息
        ctx.addZuulRequestHeader("Authorization", "Basic " + getBase64Credentials("app01", "passwd01"));
        return null;
    }
private String getBase64Credentials(String username, String password) {
        String plainCreds = username + ":" + password;
        byte[] plainCredsBytes = plainCreds.getBytes();
        byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
        return new String(base64CredsBytes);
    }
  • 3.2、application.ym里面加入:

zuul:
  routes:
    api-demo1:
      path: /demo-server/**
      sensitiveHeaders: Cookie,Set-Cookie,Authorization
      serviceId: demo-server
  • 3.3、启动gateway工程,就可以访问server的接口了



作者:staconfree
链接:https://www.jianshu.com/p/afc8b69515dd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值