# Sistem Masuk Tunggal

Single sign-on (SSO) adalah metode autentikasi yang memungkinkan pengguna untuk mengautentikasi dengan aman pada beberapa aplikasi dan situs web dengan menggunakan hanya satu set kredensial.

## Bagaimana cara kerjanya?

Anda meminta pengguna membuat SSID (Single Sign-On ID) serta token identitas dari SSID tersebut. Untuk masuk ke layanan Anda, mereka hanya perlu memasukkan ID dari token identitas.

Di latar belakang, Anda memeriksa bahwa token identitas (yang merupakan NFT) benar-benar milik pengguna dan jika iya, mendapatkan SSID dari token identitas.

Untuk mendapatkan SSID dari token identitas, Anda harus melakukan kueri pada fungsi **metadata** dari kontrak SSI (Single Sign-On Identity) yang membutuhkan ID token identitas.

```solidity
// Contoh kode
ISSI(ssiContract).metadata(identity_token_id)
```

Ini akan mengembalikan objek metadata dengan format berikut.

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

Untuk mendapatkan SSID sebenarnya, Anda akan mendapatkan variabel jawaban setelah memverifikasi bahwa pertanyaannya benar-benar SSID.

```solidity
// Kode lengkap
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
}
```

Anda akan menggunakan data SSID pengguna yang dikumpulkan dari token identitas mereka sebagai pengenal mereka dan masuk setelah Anda melakukan pemeriksaan cepat tersebut.


---

# 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/bahasa-indonesia/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.
