小编Chr*_*att的帖子

Asp.Net Core 中的多个 JWT 权限/发行者

我正在尝试使用 Ocelot 在 ASP.Net API 网关中获得 JWT 不记名身份验证以与多个机构/发行者合作。一个颁发者是 Auth0,另一个是基于 IdentityServer4 的内部认证服务器;我们正在尝试从 Auth0 迁移,但仍有依赖它的外部客户端,因此我们希望支持两者,直到所有内容都经过全面测试以进行切换。

根据this MSDN blog post,应该可以通过设置TokenValidationParameters.ValidIssuers而不是使用多个权限JwtBearerOptions.Authority。但是,无论TokenValidationParameters.ValidIssuers.

有谁知道如何让这个工作?这就是我设置身份验证的方式。它仅在注释行未注释时才有效(并且仅适用于由该单一机构颁发的令牌)。我期待 Ocelot 或 ASP.Net Core 从发行服务器获取密钥;两者都通过 .well-known/openid-configuration 提供 JWK,它与 ASP.Net Core 中间件一起使用。

public static void AddJwtBearerAuthentication(this IServiceCollection services, IConfiguration configuration)
{
    services
        .AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
        {
            //options.Authority = configuration["Jwt:Authority"];
            options.Audience  = configuration["Jwt:Audience"];
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer           = true,
                ValidateIssuerSigningKey = true,
                ValidateAudience         = …
Run Code Online (Sandbox Code Playgroud)

jwt bearer-token asp.net-core identityserver4 ocelot

8
推荐指数
3
解决办法
7909
查看次数

如何使用 ingress-nginx 让 HTTP/2 在 Kubernetes 集群中工作

我们在 API 网关后面有许多服务,而 API 网关本身又在 ingress-nginx 后面。我们尝试使用 HTTP/2 来加速到前端的数据传输,但我们所有的连接仍然使用 HTTP/1.1 完成。

客户端到 nginx 的连接是通过 HTTPS 进行的,但是 nginx 使用 HTTP 与我们的 API 网关通信,网关也使用 HTTP 与后端服务通信。

我们是否需要端到端使用 HTTPS 才能使 HTTP/2 正常工作?如果是这样,那么使用证书进行设置的最佳方法是什么?如果不是,什么可能导致连接下降到 HTTP/1.1?

我们使用 ingress-nginx 版本 0.21.0,其中包含 nginx 1.15.6 和 OpenSSL 1.1.1,这应该足以支持 TLS 1.3/ALPN/HTTP2。我们的 nginx 配置 configmap 已use-http2设置为true,我可以看到 pod/etc/nginx.conf有一条listen ... http2;线。


编辑 2019 年 10 月 5 日:

根据 @Barry Pollard 和 @Rico 的评论,我发现位于我们的 ingress-nginx 控制器前面的 AWS Elastic Load Balancer 不支持 HTTP/2。我已将 nginx 从堆栈中删除,并且我们的 API …

ssl amazon-web-services http2 kubernetes asp.net-core

5
推荐指数
1
解决办法
1万
查看次数