APIs
Flusso
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.