Connexion unique (SSO)

SSO

La connexion unique (SSO) est une méthode d'authentification qui permet aux utilisateurs de s'authentifier de manière sécurisée auprès de plusieurs applications et sites web en n'utilisant qu'un seul jeu d'identifiants.

Comment cela fonctionne-t-il ?

Vous demandez à vos utilisateurs de créer leurs SSID ainsi que des jetons d'identité à partir de ces SSID. Pour se connecter à votre service, ils auront simplement besoin de saisir les IDs des jetons d'identité.

En arrière-plan, vous vérifiez que les jetons d'identité (qui sont des NFT) appartiennent réellement aux utilisateurs et, le cas échéant, récupérez le SSID à partir du jeton d'identité.

Pour obtenir un SSID à partir d'un jeton d'identité, vous devriez interroger la fonction metadata du contrat SSI auquel vous passez l'identifiant du jeton d'identité :

// Exemple de code
ISSI(ssiContract).metadata(identity_token_id)

Cela renverra un objet de métadonnées avec le format suivant :

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

Pour obtenir le SSID réel, vous obtiendrez la variable de réponse après avoir vérifié que la question est vraiment SSID :

// Code complet
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;
}

Vous utiliseriez les données SSID de vos utilisateurs collectées à partir de leurs jetons d'identité comme leurs identifiants et les connecteriez après avoir effectué cette vérification rapide.

Last updated