spring - 带有新 Spring Security Oauth2 和 Cognito 的 Spring Cloud Gateway
问题描述
我正在尝试集成 Spring Cloud Gateway(带有 WebFlux)和 Amazon AWS Cognito。我花了将近一个星期,它仍然无法正常工作。我想使用 authentication_code 授权类型对 cognito 用户池中的用户进行身份验证。
这是我的设置:
spring:
security:
oauth2:
client:
registration:
cognito:
client-id: xxxxx
client-secret: xxxx
scope: openid
redirectUriTemplate: "http://localhost:9090/login/oauth2/code/cognito"
clientName: xxxx-client
provider:
cognito:
issuerUri: https://cognito-idp.us-east-2.amazonaws.com/xxxxxxxxx
usernameAttribute: cognito:username
这是我的 pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-security</artifactId>
</dependency>
我面临的问题之一是:
{"code":"BadRequest","message":"The server did not understand the operation that was requested.","type":"client"}
以及其他一些随机问题。我从来没有看到 Cognito 的登录屏幕。如果您可以提供一些示例应用程序,它将很有帮助。
解决方案
问题是您需要为其设置域名。您在 AWS 上的用户池 -> 应用程序集成 -> 域名页面下执行此操作。然后您需要设置一个Amazon Cognito 域。该域名可以是任何名称,只要不被占用即可。
希望这对某人有所帮助,因为这让我浪费了几个小时的时间,而且我在任何地方都找不到答案。
推荐阅读
- javascript - 使用 JavaScript (Electron/node.js) 检查文件中是否已存在一行
- xml - 根据名称在 XML 中查找属性
- r - 如何使用向量长度不一致的 purrr::map2()
- java - 有没有更好的方法从数组中获取值?
- mysql - MySQL 服务器正在运行但我无法连接:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- python-3.x - 为 WritetoFiles 设置文件名
- python - 将 csv 文件作为 pandas 数据框导入,我遇到了语法错误
- azure-data-factory - Azure 数据工厂将数据流映射到 CSV 接收器导致零字节文件
- html - 为什么在html中预览和打印时pdf会有所不同
- pyspark - 在 AWS Glue ETL 作业中删除选定的日期分区