Windows Identity Foundation STS: другие типы запросов?

Я использую вайфай. Я разработал STS, которая хорошо работает. Сама служба STS выполняет вход в систему (в основном с использованием предварительно свернутого кода, поставляемого с Microsoft MVC). На данный момент у нас есть две проверяющие стороны, которые могут нормально использовать зашифрованные идентификационные файлы cookie. Вот в чем дело: поскольку весь этот код находится в STS, я хочу, чтобы STS также выполняла другие функции, такие как регистрация новых пользователей, смена паролей и т. д. Все эти заранее подготовленные вещи. Однако после входа в систему любой запрос к маршруту в STS (скажем, учетная запись/регистрация или даже учетная запись/логин) завершается с ошибкой «Ключ недействителен для использования в указанном состоянии». Я потратил довольно много времени, и у меня есть две рабочие RP для копирования, пытаясь настроить эту штуку для расшифровки файла cookie. Я делаю вывод, что это не конфигурация. Я думаю, возможно, STS будет отвечать только на запросы идентификации. Как ни странно, все это работает на IIS Express (на моем ноутбуке), но дает указанную выше ошибку на IIS. Тогда первая мысль — защита сертификата. Однако, когда это неправильно настроено, вы даже не можете войти в систему, поэтому я знаю, что STS может получить доступ к сертификату. Извините, это все немного расплывчато, но я надеюсь, что у кого-то есть хорошие идеи или знание предметной области. Большое спасибо-


person rdgWarren    schedule 24.12.2015    source источник


Ответы (2)


вы можете убедиться, что wif использует отдельные файлы cookie для sts и каждого rp, назвав их по-разному в настройках для каждого сайта (например, stsauth, rp1auth, rp2auth). Вы можете явно указать имена в объекте ChunkedCookiedHandler на каждом сайте во время запуска приложения.

var chunkedCookieHandler = new ChunkedCookieHandler {
 RequireSsl = false, 
 Name = "stsauth", 
 Domain = domain, 
 PersistentSessionLifetime = new TimeSpan(0, 0, 30, 0)};

См. здесь полный код для этого:

person jonho    schedule 27.12.2015

стандартная служба STS занимается только входом в систему и выходом из нее. Однако, как многие узнают, есть много других потоков, которые касаются «пользовательской» вещи. Есть смена пароля, утеря пароля, смена электронной почты (фактически смена любой заявки), обновление пароля, попытка входа, регистрация, регистрация в Facebook и т. д. Не существует стандартного способа справиться с этим. Мы решили эту проблему, расширив «действия», которые можно отправлять на нашу STS. Вместо входов 1.0 и выходов 1.0 мы позволяем нашим RP напрямую выполнять 20 действий.
У вашей STS должны быть собственные файлы cookie. Он никогда не должен делиться файлом cookie с одной из проверяющих сторон. Таким образом, у вас обычно не может быть проблем с расшифровкой или шифрованием ключей.

person Willy Van den Driessche    schedule 24.12.2015
comment
Спасибо, Вилли! Я просмотрел файл cookie как находящийся в сеансе, а не в данном приложении. Как STS может иметь свои собственные файлы cookie? Я перенаправляюсь на STS, и прежде чем любой из его кодов получит управление, он выдает ошибку недопустимого ключа. Не уверен, как спросить или сказать ему использовать какой-либо другой файл cookie, кроме сеанса WIF. Спасибо- - person rdgWarren; 24.12.2015