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.
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.
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. Podaniegoogle
lubmicrosoft
aplikuje specjalny wygląd przycisku.DisplayName
- nazwa serwisu, wyświetlana w przycisku jeśli nie ma on specjalnego wyglądu określonego przezIconName
.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 tohttps://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: