2016-09-08 2 views
0

Только что узнал, что основной рабочий процесс для проверки подлинности на основе маркеров следующим образом:аутентификации на основе маркеров: Application против сервера

  1. Пользователь запрашивает доступ, предоставляя имя пользователя и пароль
  2. приложение проверяет учетные данные и возвращает маркер клиенту
  3. маркер затем хранится на клиенте и послал с каждым запросом отныне
  4. сервер затем проверяет маркер и возвращает личные данные в ответ

Теперь я понимаю, поток более или менее, однако, у меня проблемы с точки зрения применения , клиент и сервер. Я понимаю, что сервер означает, где хранится API ... который также является частью приложения. Но приложение также может быть чем угодно: от веб-приложения до мобильного приложения на разных платформах ... клиент другими словами.

Так не правда, что приложение включает в себя как сервере и клиента. Итак, что же означает каждый термин в указанном выше контексте?

Во-вторых ... Я предполагаю, что исходный токен генерируется на стороне сервера, а затем он возвращается клиенту. Это правда?

ответ

0

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

Я бы перефразировать предлагаемый технологический процесс к следующему:

  1. запросов пользователей доступа, предоставляя набор учетных данных пользователя (мы не должны использовать пароли все время, см passwordless authentication из любопытство).
  2. Сервер авторизации проверяет идентификатор пользователя и, если он действителен, выдает токен доступа.
  3. Клиент приложение, с которого пользователь начал процесс, получает и сохраняет выданный токен доступа.
  4. клиент обращается к серверу ресурсов с использованием токена доступа для получения ресурсов, связанных с пользователем.

Черт, теперь у нас есть еще больше терминов, но давайте попробуем исправить это, предоставив некоторые определения.

Во-первых, те более общие:

Client: приложение, которое получает информацию от сервера для локального использования.

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

(источник: Auth0 Identity Glossary)

Тогда определение в контексте OAuth 2.0 и/или OpenID Connect:

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

Сервер ресурсов: Сервер, на котором размещены защищенные ресурсы, способные принимать и отвечать на запросы защищенных ресурсов с использованием токенов доступа.

Клиент: Приложение, защищающее запросы на ресурсы от имени владельца ресурса и с его авторизацией. Термин «клиент» не подразумевает каких-либо конкретных характеристик реализации (например, выполняется ли приложение на сервере, на рабочем столе или на других устройствах).

(источник: RFC 6749)

Это даже полезно попытаться определить приложения, но то, что мы должны сделать вывод из других определений является следующее:

  • Как вы сказали, клиент может от веб-приложений до мобильных приложений на стороне сервера.
  • Роль сервера авторизации и сервера ресурсов может воспроизводиться одним и тем же компонентом, например веб-API, который имеет конечную точку, защищенную базовой аутентификацией HTTP, которая может использоваться для обмена паролями учетных данных пользователя и пароля с токен доступа, а затем все остальные конечные точки API защищены таким образом, что разрешают доступ только в том случае, если вы предоставляете этот токен доступа.

Наконец, последнее замечание, чтобы прояснить ваш последний вопрос, да, создание токенов доступа должно происходить на стороне сервера, поскольку создание токена будет сопровождаться каким-то механизмом, который обеспечит, чтобы токен не может быть подделан и был фактически создан очень хорошо осведомленным субъектом. Для случая JWT's этот механизм состоит из подписания токена, который достигается тем, что сервер знает секрет, который никто не знает.

+0

Благодарим вас за дополнительные сведения. – Grateful

Смежные вопросы