身份服务器2的中间件

时间:2018-12-14 06:31:10

标签: c# .net-core asp.net-web-api2 identityserver4 identityserver2

谢谢!

在我们的Web API中,我们使用Identity Server 2进行身份验证(这已经很老了),现在我们决定使用身份服务器4,但我们的要求不仅仅是从IdSrv2迁移到IdSer4,我们需要支持两台服务器,因此我们的旧客户端可以使用IdSer2的令牌进行通信,而新客户端可以使用IdSer4的令牌进行通信。

我们尝试根据自定义标头值添加条件中间件。

        app.UseWhen(context => !context.Request.Headers.ContainsKey("x-identityServerVersion"), branch =>
        {
            var options = new IdentityServerBearerTokenAuthenticationOptions
            {
                Authority = "https://localhost:44379/identity", //Identity Server 3 URL
                AuthenticationType = "Bearer",
                RequiredScopes = new[] { "sampleApi" }
            };
            branch.UseIdentityServerBearerTokenAuthentication(options); 
        });

        app.UseWhen(context => context.Request.Headers.ContainsKey("x-identityServerVersion"), branch =>
        {
            var options = new IdentityServerBearerTokenAuthenticationOptions
            {
                Authority = "http://localhost:52700", //Identity Server 4 URL
                AuthenticationType = "Bearer",
                RequiredScopes = new[] { "sampleApi" }
            };
            branch.UseIdentityServerBearerTokenAuthentication(options);
        });

上面的示例代码在IdSer3和IdSer4上运行良好,但是在IdSer2和IdSer4上我们面临着问题,因为没有可用的中间件来配置IdSer2(因为上述中间件中没有几个属性,例如: Issuer ,受众群体和签名键

0 个答案:

没有答案