# Единая точка входа

Единый вход (SSO) - это метод аутентификации, который позволяет пользователям безопасно аутентифицироваться в нескольких приложениях и веб-сайтах, используя только один набор учетных данных.

## Как это работает?

Вы просите ваших пользователей создать свои SSID, а также токены идентификации на основе этих SSID. Для входа в ваш сервис им достаточно будет ввести идентификаторы токенов идентификации.

В фоновом режиме вы проверяете, принадлежат ли токены идентификации (которые являются NFT) действительно пользователям, и, если да, получаете SSID из токена идентификации.

Чтобы получить SSID из токена идентификации, вам нужно будет запросить функцию **metadata** контракта SSI, в которую вы передаете идентификатор токена идентификации

```solidity
// Пример кода
ISSI(ssiContract).metadata(identity_token_id)
```

Это вернет объект метаданных в следующем формате

```solidity
struct SSIData {
    uint senderProfileId;
    uint receiverProfileId;
    uint auditorProfileId;
    uint deadline;
    string question;
    string answer;
    ProofType proofType;
}
```

Чтобы получить фактический SSID, вы получите переменную answer после проверки, что вопрос действительно является SSID

```solidity
// Полный код
function getSSID(uint _identity_token_id) external returns(string memory) {
    SSIData memory data = ISSI(ssiContract).metadata(identity_token_id)
    require(keccak256(abi.encodePacked(data.question)) == keccak256(abi.encodePacked("ssid")))
    return data.answer
}
```

Вы будете использовать данные SSID ваших пользователей, собранные из их токенов идентификации, в качестве их идентификаторов и входить в систему после быстрой проверки.


---

# 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.payswap.org/russkii/use-cases/ssi/single-sign-on.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.
