# Аутентификация

## Основные элементы аутентификации

* **auth\_login**: Уникальный логин кассы. Этот параметр передается в теле каждого запроса.
* **auth\_secret**: Секретный ключ, который используется вместе с auth\_login для аутентификации. Этот ключ также передается в теле запроса и должен храниться безопасно.

{% code title="Пример тела запроса" %}

```json
{
  "auth_login": "your_auth_login",
  "auth_secret": "your_auth_secret"
}
```

{% endcode %}

## Дополнительная подпись запроса

* **Что это**: signature — это хэш, который генерируется для обеспечения подлинности данных. Эта подпись создаётся на основе определённых данных, например id и amount, и используется для проверки, что запрос не был изменен и исходит от авторизованного пользователя.
* **Salt**: Секретный ключ, который используется для генерации подписи signature. Этот ключ должен храниться безопасно, ведь его передача третьим лицам может привести к потере средств.
* **Генерация**: Подпись создаётся путём хеширования определённых данных и salt-ключа с разделителем. Конкретный алгоритм генерации подписи описан в [примерах по работе с API](/specifikaciya/primery-po-rabote-s-api-na-raznykh-yazykakh.md#generaciya-podpisi-signature).

{% code title="Пример тела запроса" %}

```json
{
  "auth_login": "your_auth_login",
  "auth_secret": "your_auth_secret",
  "signature": "generated_signature"
}
```

{% endcode %}

### Использование `signature` в различных сценариях

* **Исходящие транзакции**: При создании и подтверждении исходящих транзакций, например вывод или обмен, вы должны включить сгенерированную подпись в тело запроса.
* **Валидация callback**: Для проверки подлинности поступающих уведомлений от API вам нужно сгенерировать signature и сверить полученный хэш с тем, что был отправлен вам в callback уведомлении.

## Что делать в случае компрометации?

Если ваши секретные ключи были скомпрометированы, немедленно выполните следующие действия:

1. **Устраните уязвимости**: Проверьте и устраните причины, по которым ваши ключи стали доступны посторонним. Используйте только надёжный, личный Telegram аккаунт, обязательно включите облачный пароль.
2. **Сбросьте ключи**: Перейдите в настройки вашей кассы в [боте](https://t.me/CrystalPAY_bot) и сбросьте ключи. Не забудьте обновите их в вашем приложении.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.crystalpay.io/specifikaciya/autentifikaciya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
