IdentityProxy to lekki serwer proxy uwierzytelniania, który działa jako warstwa pośrednicząca między aplikacjami a dostawcami tożsamości. Obsługuje różne protokoły OAuth2/OIDC (Azure AD, Google, GitHub) i zabezpiecza dowolną aplikację webową bez konieczności modyfikacji jej kodu. Automatycznie dodaje nagłówki HTTP z informacjami o użytkowniku do żądań kierowanych do aplikacji backendowej oraz zarządza sesjami i tokenami dostępu. Uruchamiany jako kontener Docker i konfigurowany poprzez zmienne środowiskowe, stanowi idealne rozwiązanie dla aplikacji wymagających integracji z zewnętrznymi dostawcami tożsamości bez ingerencji w kod źródłowy.
Podstawowa konfiguracja Link to heading
Poniżej znajduje się przykładowa konfiguracja IdentityProxy z wykorzystaniem Microsoft jako dostawcy tożsamości:
docker run -p 8080:8080 -e EXTERNAL_URL='http://localhost:8080/' -e IDENTITY_AUTHORITY='https://login.microsoftonline.com/svrooij.io/v2.0/' ghcr.io/svrooij/identityproxy:latest
Dokumentacja API Link to heading
IdentityProxy udostępnia interaktywną dokumentację API dostępną pod adresem http://localhost:8080/scalar/, która umożliwia przeglądanie i testowanie dostępnych endpointów bezpośrednio z przeglądarki. Specyfikacja OpenAPI jest dostępna w formacie JSON pod adresem http://localhost:8080/openapi/v1.json, co pozwala na automatyczne generowanie klientów API lub integrację z narzędziami takimi jak Postman.
Generowanie tokenów JWT Link to heading
IdentityProxy oferuje endpoint http://localhost:8080/api/identity/token służący do generowania tokenów JWT dla celów testowych lub integracji z aplikacjami. Pozwala to na tworzenie niestandardowych tokenów z określonymi claims, co jest szczególnie przydatne podczas testowania zachowania aplikacji dla różnych użytkowników i uprawnień. Przykładowe żądanie:
curl -X POST http://localhost:8080/api/identity/token \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"aud": "62eb2412-f410-4e23-95e7-6a91146bc32c",
"sub": "99f0cbaa-b3bb-4a77-81a5-e8d17b2232ec",
"expires_in": 3600,
"additional_claim_1": "value1",
"additional_claim_2": "value2"
}'
Za pomocą narzędzia jwt-cli można łatwo zdekodować otrzymany token JWT, aby zweryfikować jego zawartość:
curl -X POST http://localhost:8080/api/identity/token \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"aud": "62eb2412-f410-4e23-95e7-6a91146bc32c",
"sub": "99f0cbaa-b3bb-4a77-81a5-e8d17b2232ec",
"expires_in": 3600,
"additional_claim_1": "value1",
"additional_claim_2": "value2"
}' | jq -r .access_token | jwt decode -
np.:
Token header
------------
{
"typ": "JWT",
"alg": "RS256",
"kid": "YryVO888Tn6OJWEMQgB4O85YoIvrcGYgXKCdocAPAek"
}
Token claims
------------
{
"additional_claim_1": "value1",
"additional_claim_2": "value2",
"aud": "62eb2412-f410-4e23-95e7-6a91146bc32c",
"exp": 1767614363,
"iat": 1767610763,
"iss": "https://login.microsoftonline.com/df68aa03-48eb-4b09-9f3e-8aecc58e207c/v2.0",
"nbf": 1767610753,
"sub": "99f0cbaa-b3bb-4a77-81a5-e8d17b2232ec"
}
Podsumowanie Link to heading
IdentityProxy to potężne narzędzie do zarządzania uwierzytelnianiem i autoryzacją w aplikacjach webowych, oferujące elastyczność i łatwość integracji z różnymi dostawcami tożsamości. Dzięki prostocie konfiguracji i bogatym funkcjom, takim jak generowanie tokenów JWT i interaktywna dokumentacja API, stanowi doskonałe rozwiązanie dla deweloperów poszukujących efektywnych metod zabezpieczania swoich aplikacji.