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