当前位置: 首页 > 知识库问答 >
问题:

将spring cloud gateway与oauth2结合使用

郑松
2023-03-14

当我使用Spring云网关时,我面临一个问题

如果有依赖项,则直接或递归地调用spring boot starter tomcat

它将无法工作,因为它将启动嵌入式tomcat服务器,而不是spring cloud gateway使用的netty服务器

我开始通过排除这种依赖性来解决这个问题

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

Spring云端网关工作成功

但有时我想使用spring-cloud-starter-oauth2来使用@enableAuth2sso

我开始使用

    <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。安全oauth2。配置。注释。网状物配置OAuth2Client配置。。。。。。

原因:java。lang.NoClassDefFoundError:javax/servlet/Filter

共有3个答案

涂浩皛
2023-03-14

spring boot 2.1和spring security 5已解决此问题请参见此示例

洪飞扬
2023-03-14

使用以下依赖项(我从build.gradle复制)

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    implementation 'org.springframework.cloud:spring-cloud-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
}

按照以下步骤对网关应用进行最小化编码

@SpringBootApplication
public class App {

    @Bean
    public ForwardedHeaderTransformer forwardedHeaderTransformer() {
        return new ForwardedHeaderTransformer();
    }

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

在application.yml配置

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: XXX
            client-secret: YYY

我正在积极构建我的堆栈,使用Docker群发现的OAuth2https://github.com/trajano/spring-cloud-demo.git这样你就可以看到它是如何在行动中工作的。

宰父学
2023-03-14

正如您所看到的,Spring云网关使用反应性模型,并且基于netty而不是tomcat。反应性更改是一个重大转变,目前不受Spring Security的支持,但工作正在进行中,您可以在https://github.com/spring-cloud/spring-cloud-gateway/issues/179跟踪它

 类似资料:
  • 问题内容: 谁能给我指出一个完整的示例,而 不是 在App Engine上使用OAuth2和Flask对Google帐户进行身份验证? 我试图让用户授予对Google日历的访问权限,然后使用该访问权限从日历中检索信息并对其进行进一步处理。我还需要存储并稍后刷新OAuth2令牌。 我看过Google的oauth2client库,可以开始检索授权代码了,但是我从那里有点迷失了。通过查看Google的O

  • 问题内容: 我在SO上发现了其他几个有关JavaMail API和通过SMTP服务器发送邮件的问题,但是没有一个使用TLS安全性进行讨论。我正在尝试使用JavaMail通过我的工作SMTP邮件服务器向我发送状态更新,但是它需要TLS,而且我在网上找不到任何有关如何使用JavaMail访问需要TLS加密的SMTP服务器的示例。有人能帮忙吗? 问题答案: 实际上,我们的产品中确实有一些通知代码,如果有

  • 我已经阅读了一些关于SaaS/PaaS/IaaS的信息,我在想: 如果我提供了一个SaaS应用程序,我的客户能否使用PaaS开发和部署他自己的应用程序,PaaS将使用一些API与我的SaaS应用程序交互?还是我对云服务的理解有误?

  • 问题内容: TextMate似乎使用了我假定的内置Python版本(sys.path不起作用)。您如何配置它以使用3.1?我已经安装了3.1软件包,并且可以将IDLE用于交互式会话,但是现在需要使用TextMate。 谢谢 问题答案: TextMate使用变量的值来查找Python解释器的路径。一个好的解决方案是利用TextMate的能力来定义变量(例如基于每个项目): 打开一个新的或现有的Tex

  • 问题内容: 我想使用并且在本节中非常基础,我需要一些帮助,并且在网上之前对此主题进行了研究,但是没有令人满意的解决方案。 1-如何FFmpeg通过使用。(我不想使用Ubuntu,请不要建议。) 2-如何通过插入命令? 最后通知:我使用和。 任何建议,将不胜感激。 问题答案: 如果您需要进一步的帮助,请确切说明您要实现的目标以及不起作用的目标… 更新-根据评论: 要在Android上通过命令行使用f

  • 我严格遵循了一个教程,但我似乎无法让它发挥作用。本教程位于IDE的非模块化JavaFX和Intellij部分:https://openjfx.io/openjfx-docs/#install-爪哇 以下是我在尝试运行默认Intellij Idea JavaFX项目时收到的错误消息: 通向jdk-11.0.1和javafx-sdk-11.0.1的路径: C:\Program Files\Java J