我正在尝试将 spring-cloud-gateway 用于基于 spring-boot 的服务,该服务使用 ssl 和客户端身份验证。
问题是,通过 api 网关从客户端调用服务总是失败,并显示“certificate_unknown”(没有网关也可以正常工作)。
spring-cloud-gateway 似乎没有将客户端证书转发到后端服务。
有什么想法如何实现这一目标?这是缺少的功能吗?
谢谢
ssl client-certificates spring-cloud ssl-client-authentication api-gateway
我正在尝试使用 API Gateway 将流量路由到内部网络负载平衡器。
到基本路径 (/) 的所有路由都正常工作,所以我知道 VPC 链接已启动并可访问。
我使用任何 http 方法添加了一个代理资源 (/{proxy+})。在我选择的任何“集成请求”中:
我可以看到我的 Web 服务器响应重定向:
(b9d0c629-31ec-11e8-b452-0f13c3c62b81) Endpoint response body before
transformations: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="http://abcd1234.cloudfront.net/api/">http://abcd1234.cloudfront.net/api/</a>. If not click the link.
(b9d0c629-31ec-11e8-b452-0f13c3c62b81) Method completed with status: 301
Run Code Online (Sandbox Code Playgroud)
网页显示:
{"message":"Forbidden"}
Run Code Online (Sandbox Code Playgroud)
此外,如果我尝试直接链接到 CloudFront URL,我会收到同样的错误。
除了 CloudFront URL,我还尝试了以下内容:
自定义域名
403 禁地
我部署的阶段的 URL
{"message": "内部服务器错误"} …
amazon-vpc aws-api-gateway elastic-load-balancer api-gateway
项目背景:构建API驱动的学习管理系统。后端系统将从多个系统和接口接收数据:Web、移动、VR。
将 API 网关视为我们 API 的前端。最好是开源 API 网关,但需要确保支持和服务可用。尝试了 Tyk.io,感觉它可能是要走的路。一直在阅读其他 StackOverflow 线程,看起来 TYK 的网关交易会与 Kong 和 WSO2 之类的相比相当不错。
我们主要考虑的领域是:
如果任何正在使用或曾经使用 TYK.io 进行生产项目的人都可以分享他们的经验,特别是对于企业客户/项目,那将非常有帮助。
我的 VPC 中有公共和 Pvt 子网。我有一些服务在 Pvt 子网中的 EC2 上运行,需要通过外部/移动资源访问。我该怎么做 - VPCLink 和 NLB 是这样做的方式,还是其他方式,在公共子网 (??) 中创建一些访问点。Lambda 似乎是答案(现在几乎适用于 AWS 中的所有内容)——甚至不确定该访问如何对 Pvt 子网中的资源起作用。
同样的 Pvt 子网也可以访问外部资源(AWS 之外) - 如何使用 API 网关执行此操作?
不太了解 API 网关(和 Lambda)是如何相对于 VPC 和子网定位的,以及网络访问控制功能如何——它们是否可以直接访问 Pvt 子网。文档对此有些沉默,只谈论 IAM -如果有人可以解释这一点。在 Lambda 上找到了这个:AWS Lambda:如何为具有 VPC 访问权限的 lambda 函数设置 NAT 网关。
该文档说“API 网关允许您安全地连接……托管在 AWS 内部或外部的可公开寻址的Web 服务”。我在 Pvt 子网中的资源不可公开寻址 - 我想。
谢谢
我正在尝试按照https://ocelot.readthedocs.io/en/latest/features/authentication.html使用 Ocelot 和 IS4
使用时
public void ConfigureServices(IServiceCollection services)
{
var authenticationProviderKey = "TestKey";
services.AddAuthentication()
.AddJwtBearer(authenticationProviderKey, x =>
{
});
}
Run Code Online (Sandbox Code Playgroud)
并在 ocelot.json 中使用“TestKey”,它在启动应用程序时抛出错误
无法启动 Ocelot,错误是:TestKey,AllowedScopes:[] is unsupported authentication provider
知道出了什么问题吗?我需要在我的 IdentityServer 应用程序中特别设置一些东西吗?
我正在尝试使用以下方法引用模型:
"deets": {
"$ref":"https://apigateway.amazonaws.com/restapis/<rest_api_id>/models/stuff
}
Run Code Online (Sandbox Code Playgroud)
问题是东西有多个定义。我如何只引用一个?
例如:stuff -box -jar -cup
我尝试添加 /box,但随后收到“指定的模型无效:验证结果:警告:[],错误:[模型参考必须采用规范形式]”
我已经阅读了如何使用 aws API Gateway 从另一个模型引用一个模型,它解决了一半的问题,即实际引用,但没有说明如何引用特定定义。
我一直在从下面提到的三个 API 网关中选择一个 API 网关:
我的要求是:
所有这三个,从功能列表和性能方面看起来都不错。我正在考虑放宽第二个要求,因为我不确定这是否是一个好的做法。
我在 spring 云网关中遇到了一个非常奇特的问题。每个备用请求都会返回 404。这发生在我在 api-gateway 中配置的所有服务中,无一例外。我什至不知道从哪里开始调试这个问题。
这是我用于通用配置的 application.yml 文件。
server:
port: 8080
ssl:
enabled: true
key-store: classpath:keystore.p12
key-store-password: password
key-store-type: pkcs12
key-alias: tomcat
security:
require-ssl=true:
logging:
level:
org:
springframework:
cloud.gateway: DEBUG
http.server.reactive: DEBUG
web.reactive: DEBUG
spring:
application:
name: api-gateway
cloud:
gateway:
httpclient:
ssl:
useInsecureTrustManager: true
Run Code Online (Sandbox Code Playgroud)
这是我的java配置文件
@EnableWebFluxSecurity
public class SecurityConfig {
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http,
ReactiveClientRegistrationRepository clientRegistrationRepository) {
// Authenticate through configured OpenID Provider
http.oauth2Login();
// Also logout at the OpenID Connect provider
http.logout(logout -> logout.logoutSuccessHandler(new OidcClientInitiatedServerLogoutSuccessHandler(
clientRegistrationRepository)));
// …Run Code Online (Sandbox Code Playgroud) 我最近开始探索微服务和 API 网关的概念,并且对如何托管前端端点特别困惑。
如果我有一个 API 网关充当对我的所有服务的请求之间的中间人,那么前端究竟应该托管在哪里?如果我请求 /api/example,我知道我的 API 网关应该将其路由到适当的服务并转发该服务响应。但是,我不明白 API 网关应该如何在微服务上下文中处理 /home/。在这种情况下,我们希望将 /home/ 对应的 html/css/javascript 传递给发出 GET 请求的客户端。这是否意味着我们应该有某种前端服务?创建一个只返回 HTML/CSS/JS 的服务会不会是多余的并增加延迟,因为我们真正需要做的只是立即返回与我们的前端关联的 HTML/CSS/JS?
我正在考虑的另一种方法是让 API 网关本身提供端点,这些端点返回客户端呈现前端所需的 HTML/CSS/JS。换句话说,API 网关可以在接收到 /home/ 的 GET 请求时立即响应 /home/ 对应的 HTML,而不是调用服务。但是,我在网上读到 API 网关实际上不应该为端点提供服务,而只是将它们代理到服务。
这是我的主要问题:当您的后端使用微服务架构构建时,前端代码应该放在哪里?
api-gateway ×10
spring-cloud ×2
.net-core ×1
amazon-vpc ×1
aws-vpc ×1
azure ×1
c# ×1
http ×1
kong ×1
krakend ×1
nginx ×1
node.js ×1
ocelot ×1
open-source ×1
spring-boot ×1
ssl ×1
tyk ×1