Identity Provider Proxy
APIs

APIs

Flusso

scheme

Comunicazione fra Identity Provider Proxy e Endpoint

L'Idpp interponendosi fra l'Identity Provider e l'Endpoint invia le informazioni dell'utente tramite un header all'Endpoint. L'header é visibile solamente all'applicazione di endpoint e la sua chiave é X-Idpp-Outcoming-Data; Il valore di tale header é in formato JWT.

JWT Header decodificato:

{
  "alg": "RS256"
}

JWT Body decodificato:

{
  "sub": "V76hkpYvQTHC3rlvU0q8uhCvpQOcuv4DQCYiz-JVC28",
  "verified_secondary_email": [
    "example.2@acme.org"
  ],
  "iss": "https://www.acme-idp.org/a85314ec-ef7e-4f39-be72-fdca47945f3d",
  "preferred_username": "example@acme.org",
  "verified_primary_email": [
    "example@acme.org"
  ],
  "ipaddr": "X.X.X.X",
  "email": "example@acme.org",
  "ver": "2.0",
  "groups": [
    "5d333cc8-eea3-478f-a25f-5f1bdbb77640",
    "1c8575e9-cd1f-422e-b91d-55a485eed34f",
    "7912607a-0754-4566-b2ef-ea1bf743c689",
    "371f4ca5-3a01-4b3d-998a-3d934a4ef50a",
    "80760599-097e-4ed9-93a9-939eb1375636",
    "e157f6bc-07c0-4177-a56c-df52fc9c4292",
    "9a3a5751-724d-40a4-84e2-522d156f20b5",
    "3a8f04e9-3108-4039-989e-1278c834dd46",
    "da14a324-3008-4593-9209-ac7e4620e8f6"
  ],
  "given_name": "example",
  "nonce": "lUeYcAqMiiz_KXIGT8t9ItdWVoAXhOh3k6hqBJPtym8",
  "tenant_ctry": "EN",
  "aud": "c3d5716c-d33c-4396-84e6-bd672a387e4a",
  "tenant_region_scope": "EU",
  "upn": "example@acme.org",
  "name": "example_name example_surname",
  "family_name": "example_surname",
  "idpp_key": "pLEBKvJruSLJZPEDhb6YMOZcxoidfPyTYernPAN2mGvbSkMbVIFKPOA4TYp1fpR8PvaFCpOwiEOYRMQfvaLu9g",
  "idpp_logout_endpoint": "https://www.acme.org/logout",
  "idpp_listener_http_protocol": "HTTP/1.1"
}

Gli elementi del Body JWT sono tutte le informazioni inviate dall'Identity Provider non modificate con in piú la chiave idpp_logout_endpoint, idpp_key e idpp_listener_http_protocol.

Logout

Il logout puó essere effettuato in due modi:

  • da un client senza cookie di sessione (senza cookie di IdPP) (es: applicazione di endpoint in Go, Java, C#, Rust ..ecc)
    GET ${idpp_logout_endpoint.path} ${idpp_listener_http_protocol}
    Host: ${idpp_logout_endpoint.hostname}
    X-Idpp-Incoming-Data: ${endoded_jwt_sent_by_idpp}
  • da un client con cookie di sessione (con cookie di IdPP) (es: browser attraverso javascript)
    GET ${idpp_logout_endpoint.path} ${idpp_listener_http_protocol}
    Host: ${idpp_logout_endpoint.hostname}
    Cookie: ${idpp_cookie_name}=${idpp_cookie_value} //viene impostato automaticamente dal browser

Se il logout e andato a buon fine lo status code sará 204.

Verifica della valididitá del JWT

La firma del JWT puó essere verificata tramite la chiave pubblica utilizzata nei parametri globali della regola. Tale chiave pubblica in formato PEM puó essere esportata dell'Idpp e importata nell'applicazione di endpoint oppure eseguendo una GET a ./.well-known/public-key.

SAML2 Entity Descriptor

L'entity descriptor é ottenibile in questo path ./${n}/.well-known/saml2-entity-descriptor dove n é il numero del bottone.