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

SSO

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

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

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

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

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

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

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

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

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

// Полный код
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 ваших пользователей, собранные из их токенов идентификации, в качестве их идентификаторов и входить в систему после быстрой проверки.

Last updated