授权认证中心的授权码模式穿过zuul的timeout问题

来源:5-6 实现授权码认证流程(2)

小葱与奥特曼

2020-11-19

jojo老师,你好!
如标题所述,
若是授权码模式,回调获取code之后,再穿过zuul网关访问认证授权中心,拿code换token的时候,访问常常会出现timeout的情况;
不穿过zuul直接访问认证授权中心则速度很快,没有任何问题。这是什么原因?zuul的原因吗?
(若是密码模式,穿过zuul网关,能正常访问!)
以下是通过zuul访问认证授权中心时,前端服务器经常出现的报错信息

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Nov 19 10:39:32 CST 2020
There was an unexpected error (type=Internal Server Error, status=500).
I/O error on POST request for "http://gateway.test.local:2103/token/oauth/token": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out)

以下是zuul项目的配置信息,其他代码与课程类同(审计日志、没有进行限流、动态权限permissionserice)

spring:
  profiles:
    active: dev
  application:
    name: zuul-gateway
  # 上传文件大小,zuul和上传的服务都要加上配置;若访问上游服务地址加上/zuul则在zuul中不需要配置以下上传大小
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB
  # 数据源
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: ${AUTH_DATASOURCE_URL}
    username: ${AUTH_DATASOURCE_USERNAME}
    password: ${AUTH_DATASOURCE_PASSWORD}
    druid:
      initial-size: 1
      min-idle: 1
      max-active: 20
      test-on-borrow: true
      stat-view-servlet:
        allow: true


# 网关自验token,启动时拿到认证服务器的token_key
security:
  oauth2:
    client:
      client-id: gateway
      client-secret: 123456
    resource:
      jwt:
        key-uri: ${AUTH_SERVICE_ENDPOINT}/oauth/token_key


zuul:
  # zuul的路由转发配置
  routes:
    token:
      url: ${AUTH_SERVICE_ENDPOINT}
    house:
      url: ${HOUSE_SERVICE_ENDPOINT}
    article:
      url: ${ARTICLE_SERVICE_ENDPOINT}
    user:
      url: ${USER_SERVICE_ENDPOINT}
  # 无敏感头,所有头信息携带的信息都放过,则所有在头信息塞的东西都能往后传送
  sensitive-headers:


## 默认配置-----------------start

# feign声明式调用配置
feign:
  # 配置gzip压缩
  compression:
    request:
      enabled: true
      # 配置压缩类型、最小压缩值的标准
      mime-types: text/xml,application/xml,application/json
      min-request-size: 2048
    response:
      enabled: true
  # 可通过配置文件的方式,配置日志级别、连接超时时间、重试、拦截器、编解码器、契约(springmvc注解还是原生的feign定义方式)
  client:
    config:
      house-service:
        loggerLevel: full
  # 配置hystix启用
  hystrix:
    enabled: true

# hystrix容错配置
hystrix:
  threadpool:
    default:
      coreSize: 200 #并发执行的最大线程数,默认10
      maxQueueSize: 1000 #BlockingQueue的最大队列数,默认值-1
      queueSizeRejectionThreshold: 800 #即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝,默认值5


# mybatis
mybatis:
  type-aliases-package: com.lysj.zuulgateway.model
  mapper-locations: classpath:mapper/*.xml
mapper:
  mappers: com.lysj.zuulgateway.utils.MyMapper
  not-empty: false
  identity: MYSQL
pagehelper:
  helper-dialect: mysql
  reasonable: false
  support-methods-arguments: true
  params: count=countSql

写回答

1回答

JoJo

2020-11-30

看配置没什么问题啊...我们是没有在前面放zuul的,所以没碰到过你的问题。现在不建议用zuul了,问题比较多。

0
0

Spring Cloud微服务安全实战 可落地的安全方案

从API到复杂微服务场景,实战部署可落地的安全方案。

1029 学习 · 370 问题

查看课程