Промежуточное ПО для сервера идентификации 2 - PullRequest
0 голосов
/ 14 декабря 2018

Заранее спасибо!

В нашем веб-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 (так как в вышеупомянутом промежуточном программном обеспечении мало свойств, например,: Эмитент, аудитория и ключ подписи )

...