Я хочу использовать механизм на основе токенов, в котором у меня будут либо SPA, либо мобильные приложения, поддерживающие несколько клиентов.
Сценарий использования моего механизма веб-службы и моего приложения:
Мое веб-приложение: клиент будет регистрировать свое приложение либо в SPA, либо в мобильных приложениях. Они получат идентификатор клиента при регистрации. Только идентификатор клиента в качестве секретного ключа будет скомпрометирован в случае SPA или мобильных приложений, поэтому я я просто предоставляю clientid.
Ядро веб-службы: поддержка нескольких клиентов с управлением сеансом каждого пользователя после входа в соответствующее клиентское приложение.
Итак, скажем, есть 2 клиента, которые зарегистрировали свое приложение в моем веб-приложении:
Клиент 1: MyApp1
Клиент 2: MyApp2
Теперь, если в MyApp1 есть 2 пользователя с Джоном и Стивеном, и если они входят в MyApp1, я хочу управлять сеансом для этих пользователей с помощью механизма на основе токенов. Теперь, если Джон и Стивен хотят получить доступ к защищенному ресурсу, они могут получить доступ только через действительный токен доступа.
То же самое касается MyApp2.
Для механизма на основе токенов я видел много вопросов, относящихся только к этой статье ниже:
http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/
Но единственная путаница в приведенном выше руководстве и в большей части руководства возникает после проверки имени пользователя и пароля и создания токена доступа. Сохраняет ли указанный выше учебник токен доступа в файле cookie на стороне сервера для проверки токена доступа, когда поступает запрос на доступ к защищенному ресурсу?
Я действительно смущен здесь. Я знаю, что проверка токена доступа происходит внутри [атрибута авторизации], но без сохранения токена доступа я не могу понять, как в приведенном выше руководстве проверяется токен доступа.
Я думаю, что когда приходит запрос на доступ к защищенным ресурсам, токен доступа шифруется или расшифровывается на основе атрибута ключа машины в webconfig, и именно так токен доступа проверяется внутри атрибута [Authorize], но я просто не уверен в этом.