如何在 AWS ElasticBeanstalk 和 Nginx 上使用 OAuth2 的 Spring Boot 应用程序上强制使用 SSL?

2023-11-27

我正在尝试使用参考文档强制使用 SSL

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-security.html#howto-enable-https

不过,我已经有了

@Configuration
class WebSecurityConfiguration  {

当我添加extends WebSecurityConfigurerAdapter,甚至没有protected void configure(HttpSecurity http),然后请求非 Oauth2 页面/home/被重定向到/login没原因。它与属性设置一起使用。仅仅通过扩展类extends WebSecurityConfigurerAdapter破坏应用程序。还有其他不相关的路由受 OAuth2 保护。我之前在设置 Oauth2 时见过这种非确定性随机行为。

这是该案的概要WebSecurityConfiguration class.

@Configuration
class WebSecurityConfiguration {

    @Autowired
    UserMapper userMapper;

    @Bean
    PasswordEncoder passwordEncoder() {

    @Bean
    protected UserDetailsService userDetailsService() {

就是这样。

我尝试添加 Nginx 配置以重定向到 SSL,在此答案中https://stackoverflow.com/a/53310987/148844,但没有成功。它确实重定向到 SSL,但所有路径均出现 404 错误

HTTP 状态 404 - /home
类型 状态报告
留言/首页
描述 请求的资源不可用。
阿帕奇汤姆猫/8.0.47

tomcat 404

所以它强制使用 SSL 并访问 Tomcat,但 Spring Boot 应用程序完全混乱了。就好像 ZIP 中的 WAR 文件从未部署过一样。

参考:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-proxy.html#java-tomcat-proxy-nginx


为此我放弃了使用 Spring Boot,因为它太脆弱了,转而采用了 Nginx 配置选项。这很有效,尽管对于仅仅制作 ZIP 来说似乎过于冗长。 Elastic Beanstalk 中还存在一个错误问题!

AWS Elastic Beanstalk Tomcat 适用于 .war,但不适用于 .zip

部署ZIP时,不会部署WAR!所以我必须创建一个解决方法来创建twoZIP 中的 WAR 文件。 (只有一个,甚至称为ROOT.war,不起作用。)

我找不到用 Maven 创建空文件的方法,所以我创建了一个空文件empty.war文件放在项目根目录中,并将其捆绑在 ZIP 中,以欺骗 Elastic Beanstalk 正常工作和部署应用程序。真是一团糟! OY合租!

pom.xml
        <plugin> <!-- To add .ebextensions/ Nginx config for ElasticBeanstalk -->
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <descriptors>
              <descriptor>assembly.xml</descriptor>
            </descriptors>
          </configuration>
          <executions>
            <execution>
              <id>make-assembly</id>
              <phase>package</phase>
              <goals>
                <goal>single</goal>
              </goals>
            </execution>
          </executions>
        </plugin>           
assembly.xml
<assembly 
  xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <id>bin</id>
  <baseDirectory>/</baseDirectory>
  <formats>
    <format>zip</format>
  </formats>
  <files>
    <file>
      <source>empty.war</source>
      <outputDirectory/>
    </file>
    <file>
      <source>${project.build.directory}/AppName-0.0.3-SNAPSHOT.war</source>
      <outputDirectory/>
      <destName>ROOT.war</destName>
    </file>
  </files>

  <fileSets>
    <fileSet>
      <directory>${project.basedir}</directory>
      <outputDirectory>/.ebextensions/nginx/conf.d/elasticbeanstalk/</outputDirectory>
      <includes>
        <include>force-https.conf</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>

配置文件就在项目根目录中。我不知道还能把它放在哪里——它不是源代码。

force-ssl.conf
if ($http_x_forwarded_proto = 'http') {
    return 301 https://$host$request_uri;
}

http://maven.apache.org/plugins/maven- assembly-plugin/ assembly.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 AWS ElasticBeanstalk 和 Nginx 上使用 OAuth2 的 Spring Boot 应用程序上强制使用 SSL? 的相关文章

随机推荐

  • 为什么单个修订版的 SVN 转储比完整转储大?

    我的存储库是2 5G 通过转储svnadmin dump myrepos gt dumpfile是5G 但是当我像这样转储时svnadmin dump myrepos r 23785 gt rev 23785 dumpfile其中 2378
  • 边框图像如何与线性渐变一起使用?

    我试图了解 border image slice 在渐变边框图像的情况下如何工作 在规范中 边框图像切片的值可以是一个数字 表示光栅图像的边缘偏移 以像素为单位 和矢量图像的坐标 对于矢量图像 该数字与元素的大小有关 而不是与源图像的大小有
  • Python中的反平方根[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 是否有任何 Python
  • 如何在 .NET 中创建子集字体?

    我有一个 Silverlight 应用程序 需要在其中嵌入一些不太常见的字体 这对我来说非常简单 只需复制 TTF OTF 并使用我的应用程序进行编译即可 然而 在很多情况下 实际只使用了 5 10 个字符 在其他情况下 某些字体文件非常大
  • 将 Hibernate 升级到 5.1.0 后如何导出架构?

    我最近将 Hibernate 从 5 0 更新到 5 1SchemaExportAPI 已更改 迁移文档提到了这一更改 但没有解释如何使用较新的 API 此外 我还没有找到任何其他支持示例来修复重大更改 我偶然发现了这个代码差异 它帮助我解
  • 删除用作外键的对象

    我有下一个型号 class Target models Model name models CharField max length 100 blank False class SubTarget models Model target m
  • MVC JSON 操作返回 bool

    我的 ASP NET MVC 操作是这样写的 GET TaxStatements CalculateTax prettyId public ActionResult CalculateTax int prettyId if prettyId
  • 检测winforms中的箭头键[重复]

    这个问题在这里已经有答案了 可能的重复 上 下 左 右方向键不触发 KeyDown 事件 先看代码 using System using System Collections Generic using System ComponentMo
  • 通过 Composer 安装 Laravel 时获取建议

    从昨天开始 当我通过以下方式创建 laravel 项目时 composer create project prefer dist laravel laravel project name 我收到这些建议消息 这是正常现象还是我搞砸了什么 我
  • 如何指定实际的 x 轴值以在 R 中绘制为 x 轴刻度

    我正在 R 中创建一个绘图 但我不喜欢 R 绘制的 x 轴值 例如 x lt seq 10 200 10 y lt runif x plot x y 这将绘制一个在 X 轴上具有以下值的图表 50 100 150 200 但是 我想绘制 2
  • MySQL - IN() 中的 ORDER BY 值

    我希望对以下查询中返回的项目进行排序它们输入 IN 函数的顺序 INPUT SELECT id name FROM mytable WHERE name IN B A D E C OUTPUT id name 5 B 6 B 1 D 15
  • 如何将流程图转化为实施? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 编辑 简介 为了吸引更广泛的读者 我通过一个复杂的 有点乏味的 现实生活中的例子重新阐述了我最初的问题 原始问题如下 远 所示 Tom 刚刚被 Acme Inc 聘为初级软件工程
  • 如何使用 c# 使用 httpwebrequest 从 json api 获取数据?

    我想从中获取所有变量https api coinmarketcap com v1 ticker 在我的 C 控制台应用程序中 我怎样才能做到这一点 我首先将整个页面作为流获取 现在做什么 private static void start
  • Swift 错误:对泛型类型 Dictionary 的引用需要 <...> 中的参数

    错误Reference to generic type Dictionary requires arguments in lt gt 出现在函数的第一行 我试图让该函数返回从 api 检索到的 NSDictionary 有人知道这里会发生什
  • Java 等待线程列表

    有没有办法获取对象上的等待线程列表 等待线程数 如果您正在使用synchronized关键字 没有 但如果您正在使用java util concurrent锁 你可以 ReentrantLock有一个受保护的方法getWaitingThre
  • React Native - 将登录的 Firebase 用户重定向到 Home 组件

    我的目标是将用户重定向到Home如果用户已经登录 则组件 我可以登录用户并将其重定向到Home除非 logInUser 叫做 然而 一旦重定向到Home组件 如果我刷新模拟器 应用程序将返回到Login成分 我尝试使用来解决这个问题comp
  • 将列表中的每个元素乘以一个数字

    我想将列表中的所有元素乘以一个数字 我知道其他方法可以做到这一点 但我想知道为什么这不起作用 我得到的列表与输出完全相同 lst eval input enter a list for num in lst num num 2 print
  • 将 JPanel 置于 java 中其他对象的前面 (SWING)

    我想在应用程序处理时发出加载消息 所以我使用了JPanel over a JTree 但是当用户点击JPanel the JTree将被选择并且JPanel会去后面 隐藏之后JPanel 它再也不会出现 我不知道为什么 但它似乎永远不会走在
  • 是否可以基于 MySQL 中的列之一进行选择插入?

    以下插入是否基于 MySQL 中可能的列之一的选择 INSERT INTO student fees id name fees VALUES 1 SELECT name from students where student id 1 20
  • 如何在 AWS ElasticBeanstalk 和 Nginx 上使用 OAuth2 的 Spring Boot 应用程序上强制使用 SSL?

    我正在尝试使用参考文档强制使用 SSL https docs spring io spring boot docs current reference html howto security html howto enable https