Итак, вот установка. У меня есть поставщик STS и два сайта ASP.NET MVC, оба которых доверяют одному и тому же поставщику STS. Пользователь приходит на сайт A и перенаправляется на пассивный вход в систему поставщика STS, правильно аутентифицируется и перенаправляется обратно на сайт «A», как и ожидалось. Все это отлично работает. Я вижу токен и личность в коде на сайте «А», используя следующее:
IClaimsPrincipal claimsPrincipal = Thread.CurrentPrincipal as IClaimsPrincipal;
IClaimsIdentity claimsIdentity = (IClaimsIdentity)claimsPrincipal.Identity;
Теперь на сайте "А" есть ссылка на сайт "Б", которая использует тот же поставщик STS. Проблема заключается в том, что когда я перехожу на сайт «B», информация о претензии отсутствует, и пользователь не проходит автоматическую проверку подлинности. Согласно документации STS и WIF должно произойти следующее:
"Процесс начинается как обычно, пользователь запрашивает страницу у B на сайте A и перенаправляется на STS для получения токена. Однако на этот раз пользователь уже аутентифицирован на сайте STS, потому что является активным сеансом, представленным файлом cookie STS. Это означает, что запрос страницы STS ведет прямо к выполнению последовательности выдачи SecurityTokenService, не показывая пользователю какой-либо пользовательский интерфейс для сбора учетных данных. Токен выдается автоматически и пересылается на Б в обычной последовательности. С того момента, как пользователь перейдет по ссылке на Б и браузер отобразит запрошенную страницу с Б, только некоторое мерцание адресной строки в браузере даст тот факт, что какая-то аутентификация происходила под капотом.Во многом это и означает единый вход (SSO): пользователь прошел процедуру входа только один раз, и с этого момента система может получить доступ к другие надежные стороны без повторного запроса учетных данных пользователя».
Кто-нибудь знает, что должно произойти в поставщике STS, сайте A или сайте B, чтобы это работало правильно? Помните, что STS и сайт «А» работают отлично; просто сайт "B" не получает возможности SSO.
Спасибо!