Przejdź do głównej zawartości

OpenID

Istnieje możliwość skonfigurowania uwierzytelniania do TrapInit z użyciem zewnętrznych serwisów wspierających protokół OpenID Connect - jak Google lub Microsoft.

Aplikacja korzysta z trybu auth code flow - zewnętrzny serwis, który konfigurujemy, musi wspierać ten tryb OpenID.

Konfiguracja aplikacji

Mamy możliwość skonfigurowania dowolnej ilości zewnętrznych serwisów uwierzytelniania. Każdy z nich będzie pokazywał się jako przycisk na ekranie logowania.

Ekran logowania z serwisami oidc

Konfiguracji dokonujemy w pliku appsettings.json - znajduje się on w folderze instalacyjnym aplikacji.

Na początek, należy pamiętać o ustawieniu tam PublicUrl - powinien to być adres URL, pod którym dostępny jest aplikacja.

notatka

Jeśli TrapInit jest uruchomiony w kontenerze Docker, konfiguracje wykonujemy poprzez zmienne środowiskowe. Odzwierciedlają one strukturę appsettings.json, w sposób opisany tutaj.

Każdy serwis uwierzytelniania konfigurujemy jako obiekt w tablicy ExternalAuthenticationServices.

"ExternalAuthenticationServices": [
{
"Name": "example",
"IconName": "google",
"DisplayName": "Google",
"Authority": "https://accounts.google.com",
"ClientId": "example.apps.googleusercontent.com",
"ClientSecret": "secret-example-123"
},
{
"Name": "another-example",
"IconName": "microsoft",
"DisplayName": "Microsoft",
"Authority": "https://login.microsoftonline.com",
"ClientId": "example-client-id",
"ClientSecret": "secret-example-1234"
}
]

Konfiguracja serwisu powinna mieć zdefiniowane następujące zmienne:

  • Name - identyfikator serwisu, używany przez logikę aplikacji. Każdy skonfigurowany serwis musi mieć unikalną nazwę.

  • IconName - nazwa używana do dodatkowego stylowania przycisku logowania. Podanie google lub microsoft aplikuje specjalny wygląd przycisku.

  • DisplayName - nazwa serwisu, wyświetlana w przycisku jeśli nie ma on specjalnego wyglądu określonego przez IconName.

  • Authority - adres zewnętrznego serwisu logowania, używany do pobierania konfiguracji OpenID. Zwykle jest on podany w dokumentacji danego serwisu. Dla przykładu - dla Google jest to https://accounts.google.com.

  • ClientId - ID klienta OpenID, otrzymane od zewnętrznego serwisu.

  • ClientSecret - Sekret klienta OpenID, otrzymany od zewnętrznego serwisu po utworzeniu klienta.

Konfiguracja zewnętrznego serwisu

Aby skonfigurować logowanie z zewnętrznym serwisem, potrzebujemy client_id i client_secret. Wartości te otrzymujemy po utworzeniu klienta OpenID dla naszej aplikacji w tym zewnętrznym serwisie.

Przy tworzeniu klienta, należy ustawić redirect url na <wartość PublicUrl>/login/external-handler.

Należy także pamiętać o zezwoleniu na logowanie przez auth code flow.

Konfigurację klienta wykonuje się w inny sposób w każdym serwisie uwierzytelniania. Poniżej dostępne są linki do dokumentacji kilku popularniejszych serwisów: