У меня небольшая проблема, связанная с перенаправлением при выходе из системы (с помощью пользовательского 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», но перенаправление по-прежнему не запрашивается. У тебя есть идеи?