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