# Inicio de sesión único

El inicio de sesión único (SSO) es un método de autenticación que permite a los usuarios autenticarse de forma segura con múltiples aplicaciones y sitios web utilizando solo un conjunto de credenciales.

## ¿Cómo funciona?

Tienes a tus usuarios crear sus SSIDs, así como tokens de identidad a partir de esos SSIDs. Para iniciar sesión en tu servicio, solo necesitarán ingresar los IDs de los tokens de identidad.

En segundo plano, verificas que los tokens de identidad (que son NFTs) realmente pertenezcan a los usuarios y, si es así, obtienes el SSID del token de identidad.

Para obtener un SSID a partir de un token de identidad, tendrías que consultar la función de **metadatos** del contrato SSI al que le pasas el ID del token de identidad

```solidity
// Código de ejemplo
ISSI(ssiContract).metadata(identity_token_id)
```

Esto devolverá un objeto de metadatos con el siguiente formato

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

Para obtener el SSID real, obtendrás la variable de respuesta después de verificar que la pregunta realmente sea SSID

```solidity
// Código completo
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
}
```

Usarías los datos SSID de tus usuarios recopilados de sus tokens de identidad como sus identificadores y los iniciarías sesión después de realizar esa rápida verificación.


---

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