# Pojedyncze logowanie

Pojedyncze logowanie (SSO) to metoda uwierzytelniania, która umożliwia użytkownikom bezpieczne uwierzytelnianie w wielu aplikacjach i witrynach internetowych przy użyciu tylko jednego zestawu poświadczeń.

## Jak to działa ?

Twoi użytkownicy tworzą swoje identyfikatory SSID, a także tokeny tożsamości na podstawie tych identyfikatorów SSID. Aby zalogować się do Twojej usługi, wystarczy wprowadzić identyfikatory tokenów tożsamości.

W tle sprawdzasz, czy tokeny tożsamości (które są NFT) naprawdę należą do użytkowników, a jeśli tak, pobierasz identyfikator SSID z tokena tożsamości.

Aby uzyskać identyfikator SSID z tokena tożsamości, należy wysłać zapytanie do funkcji **metadanych** kontraktu SSI, do której przekazuje się identyfikator tokena tożsamości

```
// Przykładowy kod
ISSI(ssiContract).metadata(identity_token_id)
```

Spowoduje to zwrócenie obiektu metadanych w następującym formacie

```
struktura SSIData {
     uint nadawcaProfileId;
     uint odbiornikProfileId;
     uint audytorProfileId;
     ostateczny termin;
     pytanie ciągowe;
     odpowiedź w postaci ciągu znaków;
     Typ dowoduTyp dowodu;
}
```

Aby uzyskać rzeczywisty identyfikator SSID, zmienną odpowiedzi otrzymasz po sprawdzeniu, czy pytanie rzeczywiście dotyczy identyfikatora SSID

```
// Kompletny kod
funkcja getSSID(uint _identity_token_id) zwraca zewnętrzne (pamięć string) {
     Dane pamięci SSIData = ISSI(ssiContract).metadata(identity_token_id)
     require(keccak256(abi.encodePacked(data.question)) == keccak256(abi.encodePacked("ssid")))
     zwróć dane.odpowiedź
}
```

Jako identyfikatorów użyjesz danych SSID użytkowników zebranych z ich tokenów tożsamości i zalogujesz się po przeprowadzeniu tego szybkiego sprawdzenia


---

# 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/polski/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.
