Identity Server 4 Signout - время жизни токена - PullRequest
0 голосов
/ 02 марта 2019

У меня есть Identity Server 4 на is.mysite.com, а затем у меня mysite.com, который использует угловой для обслуживания контента.Наконец, у меня есть api.mysite.com, который использует is4 для защиты содержимого.

Что я хотел бы знать, так это ожидаемое поведение времени жизни токена после того, как пользователь вышел из системы.Рассмотрим следующий сценарий:

  1. Пользователь открывает mysite.com и нажимает кнопку входа.
  2. Пользователь перенаправляется на is.mysite.com и входит в систему
  3. Пользователь перенаправляется обратнона mysite.com и может отправлять запросы API.
  4. Пользователь открывает новую вкладку в браузере, переходит на is.mysite.com и нажимает кнопку выхода.
  5. Пользователь возвращается на предыдущую вкладку, где mysite.com является и пытается сделать вызов API.

В настоящее время я получаю то, что пользователь может получить данные.Это ожидается?Разве пользователь больше не сможет использовать указанный токен, потому что он вышел из системы?Я выхожу из системы следующим образом:

await _loginManager.LoggOffAsync(HttpContext.User);
await HttpContext.SignOutAsync();

Также, если я захожу на is.mysite.com, пользователь действительно выходит из системы.

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Если вы говорите о токенах со штампами безопасности, то это зависит от интервала проверки, который вы настроили для своей службы.Установка этого значения в ноль приведет к тому, что отметка безопасности будет проверяться при каждом запросе, поэтому выход из любого места будет происходить немедленно:

https://docs.microsoft.com/en-us/previous-versions/aspnet/dn497603%28v%3dvs.108%29

Если это не так, как выВыйдите из системы везде, тогда нам потребуется больше кода вашей настройки аутентификации, чтобы узнать, в чем проблема.

0 голосов
/ 03 марта 2019

Угловой клиент может контролировать состояние сеанса пользователя, используя спецификацию управления сеансом , это достигается с помощью iframe.Для получения дополнительной информации о процессе выхода из системы вы можете взглянуть на официальную документацию , в частности, раздел, описывающий клиенты Javascript.

Учитывая, как разработана спецификация управления сеансами, естьничего особенного в IdentityServer, что вам нужно сделать, чтобы уведомить этих клиентов о том, что пользователь вышел из системы.Тем не менее, клиенты должны выполнять мониторинг check_session_iframe, и это реализуется библиотекой JavaScript oidc-client .

Предполагается, что токен доступа остается действительным,Вот почему токены доступа действительны в течение короткого периода времени.Если вам нужен точный контроль над действительностью токенов доступа, вы можете просмотреть эталонные токены , которые можно отозвать.

0 голосов
/ 03 марта 2019

Я настроил свой IdentityServer4 для клиента ReactJS.Я предполагаю, что для связи клиентов javascript с IdentityServer4 вы установили oidc-client-js.Через который вы перенаправляете пользователя на IdentityServer4 (is.mysite.com) от своего AngularClient (mysite.com)

Если это так, вы должны вызывать метод signoutRedirect () при нажатии кнопки выхода из системы.Только после этого ваш AngularClient (mysite.com) сможет успешно выйти из системы с IdentityServer4 (is.mysite.com).

Как только пользователь выйдет из системы, остальные вкладки будут уведомлены и выведены из системы.в браузере.

"Убедитесь, что вы добавили тег [Authorize] на контроллер, чтобы ограничить использование клиентом API без действительного маркера доступа."

...