> For the complete documentation index, see [llms.txt](https://docs.payswap.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payswap.org/polski/use-cases/ssi/single-sign-on.md).

# Pojedyncze logowanie

SSO

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
