Spring Cloud解決 Zuul 中 OAuth2 報 unauthorized 錯誤記錄


問題列表

問題一

問題描述

微服務中使用 OAuth2 鑒權,直接訪問正常,通過 Zuul 訪問報錯:

{
    "error": "unauthorized",
    "error_description": "Full authentication is required to access this resource"
}

解決方法

  • 在 Zuul 中添加配置:
zuul:
  sensitive-headers: Cookie,Set-Cookie

原因:
zuul.sensitive-headers (默認值 Cookie,Set-Cookie,Authorization) 是指 http header 中的敏感信息,默認情況下,ZUUL 是不轉發的
OAuth2 的鑒權信息是放在 Authorization 中,所以需要從配置中移除,切急不要把Authorization配置值加上去

問題二

問題描述

微服務中使用 OAuth2 鑒權,遇到資源無權限訪問,其實zuul對於服務來說也是OAuth2 的一個客戶端,因為也需要先通過OAuth2 的認證才會進行跳轉,錯誤如下:

Authentication request failed: exception:Invalid token does not contain resource id (oauth2-resource-client-auth)

解決辦法

在Zuul中的resourceServer中需要寫明是那個resourceId去連接

 @Override
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
        resources.resourceId("resource-server").stateless(true);//在server的client里面配置
        ....
    }

OAuth2 的配置如下,需要和resourceid一致才可以:
在這里插入圖片描述

問題三

問題描述

Zuul整合時日志沖突,整合Zuul時,啟動時發現日志報錯
在這里插入圖片描述

解決辦法

很明顯是日志Jar包沖突了,可以通過exclusions來解決,通過使用maven查看發現是zipkin-server也同時引入了log4j2的包
在這里插入圖片描述

 	<dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-server</artifactId>
            <version>2.11.7</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-log4j2</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

加入Pom.xml后重啟問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM