невозможно автоматически аутентифицироваться, несмотря на наличие токена ACS

Я настраиваю Azure ACS с Google, настроенным как IdP в моем приложении. Мое требование состоит в том, что я не хочу, чтобы страница входа в IdP отображалась каждый раз, когда я пытаюсь войти в свое приложение. Я установил максимальный срок жизни своего токена ACS, чтобы мой токен был действителен в течение дня.

В первый раз, когда я вхожу в свое приложение и выбираю «Оставаться в системе» на странице входа в Google, я могу войти в свое приложение. Теперь я закрываю браузер, снова открываю приложение, меня успешно перенаправляют на домашнюю страницу приложения без запроса учетных данных. (поскольку ACS внутренне использует токен сеанса, созданный внутри, который будет использоваться в следующих запросах)

Но если я не выберу «Оставаться в системе» на странице входа в систему IdP и выполню те же действия, меня попросят ввести учетные данные. Любая идея, почему это происходит? Есть ли способ манипулировать токеном сеанса и проверить токен ACS, который был мне ранее выдан?


acs
person sireesha    schedule 23.08.2012    source источник


Ответы (1)


Когда вы выбираете «оставаться в системе» в Google, он записывает постоянный файл cookie, что означает, что вы останетесь в системе, даже если закроете браузер. По умолчанию файл cookie вашего приложения привязан к сеансу (при условии, что вы используете WIF). Когда вы закрываете и снова открываете браузер, исходный токен и файл cookie исчезают. Ваш браузер перенаправляет на ACS, который перенаправляет на Google, который снова перенаправляет вас из-за постоянного файла cookie Google. Запуск вашего сеанса с помощью Fiddler или HttpWatch должен показать, что даже когда вы выбираете «оставаться в системе», вы все равно отправляетесь обратно в ACS и Google и получаете новый токен.

Похоже, что вы хотите, чтобы ваш RP «запоминал» пользователя, чтобы ему не приходилось снова входить в систему в течение срока действия токена. Для этого ваш федеративный файл cookie (тот, в котором содержится токен) должен быть установлен как постоянный, а не сеансовый. Если вы используете WIF, это можно сделать с помощью конфигурации CookieHandler на FederationAuthenticationModule (см. PersistentSessionLifetime).

person Oren Melzer    schedule 24.09.2012