api网关zuul 与 其他服务整合JWT(五)

api网关zuul 与 其他服务整合JWT(五)

上个章节已经做好了认证服务,但是调用服务是从先进入网关,再在网关路由到具体的服务的,现在添加了认证服务,所以在网关中需要一些配置才能让请求到达具体服务
进入mygateway,添加安全配置类

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
   

    /**
     * http安全配置
     * @param http http安全对象
     * @throws Exception http安全异常信息
     */
    @Override
    public void configure(HttpSecurity http) throws Exception {
   
        http.csrf().disable();  // 禁用csrf
    }
}

然后进入application.yml

#服务器配置
server:
  #端口
  port: 8080

#spring配置
spring:
  #应用配置
  application:
    #名称: api网关服务
    name: api-gateway

#服务器发现注册配置
eureka:
  client:
    serviceUrl:
      #配置服务中心(可配置多个,用逗号隔开)
      defaultZone: http://${
   user.name}:${
   user.password}@192.168.0.112:8761/eureka
zuul:
  sensitive-headers:     #Cookie,Set-Cookie


oauth2:
  signature-verification:
    public-key-endpoint-uri: http://myuaa/oauth/token_key
    #ttl for public keys to verify JWT tokens (in ms)
    ttl: 3600000
    #max. rate at which public keys will be fetched (in ms)
    public-key-refresh-rate-limit: 10000
  web-client-configuration:
    #keep in sync with UAA configuration
    client-id: web_app
    secret: changeit
    # Controls session expiration due to inactivity (ignored for remember-me).
    # Negative values disable session inactivity expiration.
    session-timeout-in-seconds: 1800

user:
  name: admin
  password: admin_1

其中 zuul是网关配置,我们可以配置路由,规则,这些也可以使用默认的,重点讲sensitive-headers,zuul默认会屏蔽cookie,所以我们在请求头head的数据会被拦截,sensitive-headers配置就是设置网关拦截的,如果为空,代表关闭黑名单,所有的都会往下传,不为空,设置的才会往下传.像上面,我设的空,即是请求所有往下传,当然你们也可以设置cookie往下传,只需将 Cookie,Set-Cookie加上去,即代表cookie往下传,不会拦截认证信息
打开postmen
在这里插入图片描述
上面我用的网关走的请求,192.168.0.112:8080是网关,myuaa是认证服务的项目名

这里要说一下,由于我们用了JWT,拿到的token都是加密的,在myuaa上还好,去了其他的服务是需要解密的:

这里是有两种方案的:
1.所有的请求是在网关解密,在路由到具体服务
2.所有的解密是在资源服务器上,网关只是路由

我这里选择是在资源服务器上解密,减轻网关压力,将压力分发到不同的资源服务器上

进入app-producer-1,创建资源配置类ResourceConfiguration
ResourceConfiguration

@Configuration
@EnableResourceServer
//@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class ResourceConfiguration extends ResourceServerConfigurerAdapter {
   
    @Override
    public void configure(HttpSecurity http) throws Exception {
   
        http
           
            .authorizeRequests()
            .antMatchers("/api/**").authenticated()
         .and()
            .csrf()
            .disable()
        ;
    }
}

所有/api开头请求需要认证,
添加自定义配置依赖

		<dependency>
            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值