Авторизация приложения

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

Протокол OAuth2 позволяет сделать авторизацию безопасной и удобной. При OAuth2-авторизации приложению не нужно запрашивать у пользователя его логин и пароль. Вместо этого пользователь выдает приложению разрешение работать со своим кошельком в рамках разрешенных пользователем ограничений.

Авторизация приложений в Яндекс.Деньгах соответствует спецификациям:

Схема взаимодействия пользователя и приложения с OAuth-сервером Яндекс.Денег представлена на диаграмме:

Действия разработчика

  1. Разработчик регистрирует свое приложение в Яндекс.Деньгах.

    Согласно протоколу OAuth2, это фаза Registration Request. Яндекс.Деньги выдают разработчику client_id - идентификатор приложения, тип string.

  2. Разработчик встраивает в код приложения полученный client_id, объявляя его константой. Далее приложение распространяется любым удобным способом. В течение жизненного цикла приложения client_id не изменяется.

Сценарий авторизации приложения пользователем

  1. Пользователь инициирует авторизацию приложения для управления своим счетом.

  2. Приложение отправляет запрос Authorization Request на сервер Яндекс.Денег.

  3. Яндекс.Деньги перенаправляют пользователя на страницу авторизации.

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

  5. Приложение получает ответ Authorization Response в виде HTTP Redirect со временным токеном для получения доступа или кодом ошибки.

  6. Приложение, используя полученный временный токен доступа, отправляет запрос на получение токена авторизации (Access Token Request)

  7. Ответ содержит токен авторизации (access_token).

  8. Приложение сообщает пользователю результат авторизации.

Удостоверение подлинности приложения по секретному слову

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

Для этого, при получении токена авторизации (вызов /oauth/token), приложение передает секретное слово (client_secret), известное только приложению.

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

Требования безопасности

  1. Все сетевые взаимодействия производятся только по HTTPS.
  2. Приложение должно проверять корректность SSL-сертификата сервера и немедленно прекращать сессию в случае неуспеха проверки, чтобы не допустить утечку данных авторизации.
  3. Не храните токен авторизации в открытом виде, в том числе в виде cookies.
  4. Никогда не используйте токен авторизации в параметрах запросов (GET, POST, и пр.).

  5. Секретное слово никогда не должно проходить через устройство или браузер пользователя.
  6. Секретное слово не должно использоваться в иных запросах, кроме запроса на получение токена.