Перенаправление выхода из системы не работает (IdentityServer3) - PullRequest
0 голосов
/ 22 января 2020

У меня небольшая проблема, связанная с перенаправлением при выходе из системы (с помощью пользовательского OpenIdConnectAuthenticationMiddleware). У меня есть поставщик удостоверений, к которому я добавил внешнего поставщика удостоверений следующим образом: Я создал расширение для IAppBuilder:

public static IAppBuilder UseMyExtIdentityAuthentication(this IAppBuilder app, string singInAsType)
        {
            string externalIdpUrl= ConfigurationManager.AppSettings["externalIdpUrl"];
            PathString callbackPath = ConfigurationManager.AppSettings["callbackPath"];

            var options = new OpenIdConnectAuthenticationOptions
            {
                Authority = externalIdpUrl,
                MetadataAddress = externalIdpUrl+ "/v1.1/.well-known/openid-configuration",
                AuthenticationType = ConfigurationManager.AppSettings["authType"],
                Caption = ConfigurationManager.AppSettings["caption"],
                SignInAsAuthenticationType = singInAsType,
                ClientId = ConfigurationManager.AppSettings["clientId"],
                ClientSecret = ConfigurationManager.AppSettings["clientSecret"],
                CallbackPath = ConfigurationManager.AppSettings["callbackPath"],
                RedirectUri = ConfigurationManager.AppSettings["redirectUri"],
                ResponseType = "code",
                PostLogoutRedirectUri = "https://localhost:44376/",
                Notifications = new OpenIdConnectAuthenticationNotifications {
                    SecurityTokenValidated = SecurityTokenValidated,
                }
            };
            return app.Use(typeof(MyExtIdentityAuthenticationMiddleware), app, options);
        }

MyExtIdentityAuthenticationMiddleware имеет следующую реализацию:

 public class MyExtIdentityAuthenticationMiddleware: OpenIdConnectAuthenticationMiddleware
    {
        private readonly ILogger _logger;

        public MyExtIdentityAuthenticationMiddleware(OwinMiddleware next, IAppBuilder app, OpenIdConnectAuthenticationOptions options) : base(next, app, options)
        {
            _logger = app.CreateLogger<OpenIdConnectAuthenticationOptions>();
        }

        protected override AuthenticationHandler<OpenIdConnectAuthenticationOptions> CreateHandler()
        {
            return new MyExtIdentityAuthenticationIdentityAuthenticationHandler(_logger);
        }

    }

На стороне клиента я устанавливаю id_token_hint, когда есть запрос на выход из системы, и клиент знает об этом PostLogoutRedirectUri, и для EnablePostSignOutAutoRedirect установлено значение true. Я попытался установить login_hint в параметрах UseMyExtIdentityAuthentication с помощью «RedirectToIdentityProvider», но перенаправление по-прежнему не запрашивается. У тебя есть идеи?

...