web-dev-qa-db-ja.com

OAuth2でSpring Cloud Gatewayを使用する

spring Cloud Gatewayを使用すると問題が発生する

依存関係が直接または再帰的にspring-boot-starter-Tomcatを呼び出すかどうか

spring Cloud Gatewayが使用するNettyサーバーではなく、組み込みTomcatサーバーを起動するため、機能しません

この依存関係を除外することでこの問題を解決し始めました

        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-Tomcat</artifactId>
            </exclusion>
        </exclusions>

春のクラウドゲートウェイは正常に機能しました

しかし、時々、Spring-cloud-starter-oauth2を使用して@ EnableOAuth2Ssoを使用したい

使い始める

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-oauth2</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-Tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

その時私は例外を投げるという大きな問題に直面します

原因:Java.lang.IllegalStateException:org.springframework.security.oauth2.config.annotation.web.configuration.OAuth2ClientConfiguration ......のアノテーション付きメソッドのイントロスペクションに失敗しました......

原因:Java.lang.NoClassDefFoundError:javax/servlet/Filter

10
ashraf revo

ご覧のとおり、Springクラウドゲートウェイはリアクティブモデルを使用し、Tomcatではなくnettyに基づいています。反応的な変更は大きな変化であり、現在Spring Securityではサポートされていませんが、作業は進行中であり、 https://github.com/spring-cloud/spring-cloud-gatewayで追跡できます。/issues/179

2
Ryan Dawson