シングル・サインオン

SSO

シングルサインオン(SSO)は、1組の認証情報を使用して、複数のアプリケーションやウェブサイトに安全に認証できる認証方法です。

仕組みはどのように機能しますか?

ユーザーには、彼ら自身のSSIDおよびそれらのSSIDからのIDトークンを作成してもらいます。サービスにサインインするには、彼らは単にIDトークンのIDを入力する必要があります。

バックグラウンドでは、(NFTである)IDトークンが本当にユーザーに属しているかを確認し、もし属していれば、IDトークンからSSIDを取得します。

IDトークンからSSIDを取得するには、IDトークンIDを渡してSSIコントラクトのmetadata関数をクエリする必要があります。

// 例のコード
ISSI(ssiContract).metadata(identity_token_id)

これは、以下の形式のメタデータオブジェクトを返します。

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

実際のSSIDを取得するには、質問が本当に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