ADFS WS-Federation игнорирует wreply при выходе — перенаправляет на страницу выхода по умолчанию вместо моего приложенияC#

Место общения программистов C#
Ответить
Anonymous
 ADFS WS-Federation игнорирует wreply при выходе — перенаправляет на страницу выхода по умолчанию вместо моего приложения

Сообщение Anonymous »

У меня есть приложение веб-форм ASP.NET, использующее OWIN + WS-Federation на сервере ADFS 2016/2019. После выхода из системы ADFS всегда показывает собственную страницу "Déconnexion / Vous vous êtes déconnecté." вместо перенаправления обратно на страницу входа в adfs — даже несмотря на то, что я отправляю действительный параметр wreply в запросе на выход.
URL-адрес выхода из ADFS в браузере выглядит следующим образом (правильно, проблем с кодировкой нет):

Код: Выделить всё

https://srvadfs.oc.gov.ma/adfs/ls/?wtrealm=https%3A%2F%2Ffdfp.oc.gov.ma%2FWorkflow
&wa=wsignout1.0
&wreply=https%3A%2F%2Ffdfp.oc.gov.ma%2FWorkflow%2Flogin.aspx
Мой OWIN Startup.cs

Код: Выделить всё

using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.WsFederation;
using Owin;
using System.Configuration;

[assembly: OwinStartup("WebAppStartup", typeof(WebApplication.Startup))]
namespace WebApplication
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(
CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = CookieAuthenticationDefaults.AuthenticationType
});

app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
{
MetadataAddress  = ConfigurationManager.AppSettings["AdfsMetadataAddress"],
Wtrealm          = ConfigurationManager.AppSettings["WtrealmAppUrl"],
Wreply           = ConfigurationManager.AppSettings["WreplyAppUrl"],
SignInAsAuthenticationType = CookieAuthenticationDefaults.AuthenticationType,

Notifications = new WsFederationAuthenticationNotifications
{
RedirectToIdentityProvider = context =>
{
if (context.ProtocolMessage.IsSignOutMessage)
{
context.ProtocolMessage.Wreply = ConfigurationManager.AppSettings["SignOutRedirectUrl"];
}
return System.Threading.Tasks.Task.FromResult(0);
}
}
});
}
}
}
Кнопка выхода из системы (код программной части)

Код: Выделить всё

protected void btnLogout_Click(object sender, EventArgs e)
{
Session.Clear();
Session.Abandon();

if (Request.Cookies != null)
{
foreach (string cookie in Request.Cookies.AllKeys)
Response.Cookies[cookie].Expires = DateTime.Now.AddDays(-1);
}

var ctx = HttpContext.Current.GetOwinContext();
ctx.Authentication.SignOut(
CookieAuthenticationDefaults.AuthenticationType,
WsFederationAuthenticationDefaults.AuthenticationType
);
}
Настройки приложения Web.config Что я ожидаю и что происходит
Ожидаемое: После выхода ADFS обрабатывает wreply и перенаправляет браузер на https://fdfp.oc.gov.ma/Workflow/login.aspx. на странице входа, где я выполнил задачу входа в систему adfs
Изображение

Фактическое: ADFS показывает собственную встроенную страницу выхода ("Déconnexion — Vous vous êtes déconnecté.") и остается там. Параметр wreply присутствует в URL, но полностью игнорируется.

Подробнее здесь: https://stackoverflow.com/questions/799 ... ogout-page
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»