Аутентификация/авторизация в API ч.2

Если вы наткнулись на эту статью, лучше почитать ч.1, а потом вернуться сюда :)

1. OAuth 1.0 - это протокол, который предоставляет методы для безопасной авторизации клиентов, особенно приложений третьих сторон, для доступа к защищенным ресурсам пользователя

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

Host: example.ru

Authorization: OAuth oauth_consumer_key="consumer_key", oauth_token="access_token", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1234567890", oauth_nonce="nonce", oauth_version="1.0", oauth_signature="signature"

2. OAuth 2.0 - это более современная версия протокола, предоставляющая возможности авторизации с использованием токенов доступа и обновления Пример использования: клиент получает токен доступа после успешной аутентификации. После получения токена доступа, клиент включает его в запросы к защищенным ресурсам, демонстрируя тем самым свою авторизацию

Host: example.ru

Authorization: Bearer ghp_txxt4iRxSdHBxgUfRaOOI1jav3

Чаще всего эти протоколы используются, когда, например, заходим на некий веб-ресурс/моб.приложение и нам требуется аутентификация и авторизация. А ниже есть кнопки войти через "Gmail", "ВК", "Яндекс" и т.д.

Принцип работы:

Аутентификация/авторизация в API ч.2

3. JSON Web Token (JWT) - это стандарт для создания токенов доступа, которые могут содержать утверждения о пользователе и дополнительную информацию, подписанную с использованием секретного ключа

Пример использования: после успешной аутентификации, сервер генерирует JWT, который включается в заголовок запросов от клиента

Host: example.ru

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

JWT состоит из трех разделов: заголовка (header), полезной нагрузки (payload) и подписи (signature), разделы разделены точкой, как на примере выше.

Аутентификация/авторизация в API ч.2

Заголовок (Header): заголовок JWT содержит два основных поля: "typ" (тип токена) и "alg" (алгоритм подписи). Эта часть используется для определения типа токена и используемого алгоритма подписи.

Полезная нагрузка (Payload): содержит утверждения (claims) о пользователе и дополнительную информацию, которая будет представлена в токене. Ее можно использовать для передачи информации о пользователе, а также для определения различных атрибутов, например, срок действия токена.

Подпись (Signature): подпись JWT создается путем хеширования строки, полученной из закодированного заголовка, закодированной полезной нагрузки, и секретного ключа с использованием выбранного алгоритма из заголовка. Это поле используется для проверки целостности и подлинности токена.

На сайте https://jwt.io/ можно поупражняться в составлении токена и в разборе его содержимого

Лайк, если было полезно)

Начать дискуссию