Как отслеживать, есть ли у пользователя с токеном доступа действительный сеанс? - PullRequest
0 голосов
/ 16 апреля 2019

Я новичок в OIDC и управлении сессиями в целом, и мне было интересно, какой рекомендуемый способ убедиться, что сеанс пользователя действителен после того, как он уже вошел на сайт, используя неявный поток или поток кода авторизации.

Например, допустим, пользователь входит на mysite.com и получает в процессе токен доступа. Токен может быть сохранен, например, в файле cookie только HTTP.

Если mysite.com опрашивает поставщика OpenId (OP), чтобы проверять состояние сеанса пользователя каждый раз, когда он делает запрос к защищенному ресурсу (даже если этот ресурс не извлекается из OP), чтобы убедиться, что пользователь не ' например изменил cookie токена доступа вручную? Или же mysite.com должен просто слепо доверять маркерным cookie-файлам пользователя после успешной аутентификации OIDC?

Полагаю, одной из возможностей было бы сохранение состояния сеанса пользователя в БД, но это кажется довольно сложным решением простой проблемы.

Какой совет по передовому опыту?

1 Ответ

1 голос
/ 18 апреля 2019

Рекомендации описаны в черновой спецификации OpenID Connect Session Management 1.0 .

Во-первых, вам нужно избегать генерирования слишком большого сетевого трафика между устройством конечного пользователя и OP.Это особенно важно для мобильных устройств.Таким образом, вместо повторения запроса на аутентификацию проект спецификации дает лучший способ объединить состояние сеанса конечного пользователя с OP: вставка скрытого iframe в OP на веб-странице вашего сервиса.Таким образом, этот OP iframe будет поддерживать сеанс для OP посредством cookie сеанса, без необходимости аутентификации пользователя.Таким образом, вы можете опрашивать этот iframe, используя межфреймовые сообщения, чтобы регулярно проверять, активен ли сеанс с OP.Таким образом, не будет никакого потока аутентификации, чтобы проверить, активен ли сеанс к OP.

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

Как сказано в спецификации, вполне возможно, что Конечный пользователь мог выйти из OP до истечения срока действия.Поэтому очень желательно иметь возможность узнать состояние входа в систему конечного пользователя на OP .Это лучшая практика.Но многие SP не проверяют состояние сеанса конечного пользователя с помощью OP.Они управляют только своим собственным сеансом, который, например, удаляется после некоторого периода бездействия.Когда такое событие происходит, они направляют конечного пользователя в точку входа аутентификации в OP, чтобы инициировать новый аутентифицированный сеанс.

Многие SP не выбирают закрывать сеанс с SP, когда сеанс сOP был выключен.С точки зрения OP, сеанс с OP может длиться долго не для того, чтобы SP поддерживали свои сеансы, но чтобы избежать повторной аутентификации конечного пользователя, когда он подключается к другому SP.Это особенно важно, когда группа SP работает вместе для обеспечения бесперебойного взаимодействия с пользователем, при котором пользователь прозрачно перенаправляется с одного SP на другой.

...