Как передать значения из AD FS 2.0 HomeRealmDiscovery.aspx в FormsSignIn.aspx? - PullRequest
1 голос
/ 10 ноября 2011

Страницы входа в AD FS 2.0 представляют собой небольшое веб-приложение ASP.NET (использующее .NET 2.0), которое можно настраивать для изменения внешнего вида и функциональности.(Такая настройка явно задокументирована Microsoft: см. Настройка страниц входа в систему и ее подстраниц.)

У меня есть сценарий, в котором есть несколько «домашних сфер» (= «Заявки»).Поставщик доверяет »), и когда AD FS 2.0 использует вход в формы (в отличие от другого « обработчика проверки подлинности »).

Когда страница HomeRealmDiscovery.aspx После нажатия этой страницы эта страница должна каким-то образом выбрать домашнюю область (например, путем запроса пользователя), а затем вызвать SelectHomeRealm () .Обычно это делается в некотором обработчике событий ASP.NET для некоторой кнопки отправки.В этот момент элемент управления передается на страницу FormsSignIn.aspx .

Теперь на странице FormsSignIn я хотел бы использовать некоторые данные (не связанные непосредственно с AD FS)который был введен на странице HomeRealmDiscovery.Однако я не вижу способа получить эти данные.

Страница MSDN «Как: определить, как вызывались веб-страницы ASP.NET» объясняет, как узнать, как передавался элемент управления.В моем случае я обнаружил, что на странице FormsSignIn IsPostBack равно false, PreviousPage равно нулю, а IsCallback равно false.(Также IsCrossPagePostBack является ложным.) Поэтому на странице MSDN предполагается, что страница FormsSignIn была вызвана с использованием «исходного запроса».Но это не так, поскольку я наблюдаю (используя, например, Fiddler), что управление не передается путем перенаправления клиентского браузера каким-либо образом.Поэтому я ожидаю, что это будет «передача с сервера», чтобы я мог использовать PreviousPage, чтобы получить экземпляр страницы HomeRealmDiscovery.(Я пытался использовать cookie-файл, но он не работает, поскольку браузер не участвует в передаче.)

Поэтому мой вопрос: как передать значение со страницы AD FS 2.0 HomeRealmDiscovery.aspxна его страницу FormsSignIn.aspx?

1 Ответ

2 голосов
/ 14 ноября 2011

AD FS выполняет некоторые манипуляции с HTTP-запросом, поэтому лучший вариант, который я нашел, - это использование коллекции элементов HttpContext для обмена данными.

Итак, со страницы HomeRealmDiscovery установите значения с помощью:

var context = HttpContext.Current;

string someValue = "someValue";
ComplexObject someOtherValue = new ComplexObject();

context.Items.Add("key", someValue);
context.Items.Add("key2", someOtherValue);

А затем в FormsLoginPage получите значения с:

var context = HttpContext.Current;

var value = context.Items["key"] as string;
var otherValue = context.Items["key2"] as ComplexObject;

Надеюсь, это поможет.

...