...
- Entity ID - powinno być w formacie URL. Jest to losowo wygenerowany przez nas identyfikator identyfikujący nas na serwerze SSO. Musi zaczynać się od litery.
Przykład: https://www.test.plusworkflow.pl/PlusWorkflow/api/authentication/sso/id/testId-if7-fi6-xh-c0
Wymagane jest połączenie HTTPS - Reply URL (Assertion Consumer Service URL)
- adres, na którym będziemy oczekiwać odpowiedzi z SSO. Jest to adres do systemu PlusWorkflow na endpoint /api/authentication/sso/login?provider=sso
Przykład: https://www.test.plusworkflow.pl/PlusWorkflow/api/authentication/sso/login?provider=sso
Wymagane jest połączenie HTTPS - SLO (Single Logout Service URL)
- adres, na którym będziemy oczekiwać sygnału o wylogowaniu w SSO lub odpowiedzi na żądanie wylogowania w SSO (opcjonalnie jeżeli klient chce obsługiwać SLO). . Jest to adres do systemu PlusWorkflow na endpoint /api/authentication/sso/logout?provider=sso.
Przykład: https://www.test.plusworkflow.pl/PlusWorkflow/api/authentication/sso/logout?provider=sso
...
Generowanie certyfikatu x.509 pem opisane niżej "Tworzenie keys tore store jks".
Konfiguracja połączenia do SSO z PlusWorkflow
Po zainstalowaniu wtyczki w Administracja -> Konfiguracja systemu -> Konfiguracja wtyczek pojawi się opcja Plus SSO Authenticator.
1 ) W pierwszej zakładce SAML REQUEST (JSON) możemy:
- ustawić checkbox active, który oznacza czy logowanie przez SSO ma być aktywne. Jeżeli nie, to na formularzu logowania nie pojawi się przycisk logowania przez SSO.
- wybrać rozwiązanie autoryzacji SSO Solution
- podać nazwę źródła danych na podstawie którego ma być utworzony użytkownik w systemie jeżeli jeszcze nie istnieje Create user from datasource id (więcej szczegółów tutaj)- disableSingleLogOut - pozwala wyłączyć wylogowanie przez SSO
...
- skonfigurować dane do Key Store z kluczami do podpisywania wiadomości. Hasła do Key Store i klucza prywatnego zostaną zaszyfrowane i nie będzie można ich odszyfrować. Będą miały postać "enc:zaszyfrowane_hasło". Hasło do zaszyfrowania nie może zaczynać się od ciągu znaków "enc:".
Tworzenie key store jsk:
keytool -genkeypair -alias suncode -keyalg RSA -keysize 2048 -keystore mystore.jks -validity 365
...
Opcjonalnie utworzenie pem do wgrania w SSO w Base64: openssl x509 -inform der -in mycertificate.cer -out publiccert.pem
2) W drugiej
...
zakładce ENTITY DESCRIPTOR (XML) zapisujemy entity descriptor z certyfikatem(należy go pobrać i wkleić), który otrzymaliśmy po skonfigurowaniu SSO Azure.
W W Azure certyfikat znajduje się w następującym miejscu:
3) W trzeciej zakładce POST AUTH HANDLERS możemy skonfigurować co ma dziać się po autentykacji SSO
createUserFromDataSourceId - nazwa źródła danych na podstawie którego ma być utworzony użytkownik w systemie jeżeli jeszcze nie istnieje (więcej szczegółów tutaj)
defaultGroupNames - domyślne grupy do których zostanie przypisany nowo utworzony użytkownik przez źródło danych skonfigurowane w parametrze createUserFromDataSourceId (gurpy można podawać rozdzielająć je średnikiem).
extraAuthVerifiers - dodatkowe autentykacje użytkownika jeżeli SSO zwróci odpowiedź i użytkownik został rozpoznany w PWFL. Jest to tablica weryfikatorów gdzie każdy z nich ma do skonfigurowania parametry:
- firstVerifierValueProvider - dostawca pierwszej wartości do porównania
- secondVerifierValueProvider - dostawca drugiej wartości do porównania
- ignoreCase - parametr określający czy wartości porównywać z uwzględnieniem wielkości liter
Dostawcy wartości do porównania składają się z parametrów type i param. Dostępne wartości parametru type:
- STATIC_VALUE - zwrócona zostanie wartość wpisana w parametrze "param"
- AUTHENTICATION_RESULT_ATTRIBUTE - nazwa parametru podana jako "param" jest szukana w odpowiedzi SSO (SamlResponse) w sekcji AttributeStatement i wartość dla tego parametru zostaje zwrócona
- VALUE_FROM_DATA_SOURCE_WITH_PWFL_USERNAME_AS_INPUT_VALUE - zwrócona zostanie wartość ze źródła danych o identyfikatorze takim jaki zostanie ustawiony w parametrze "param".
Parametr wejściowy powinien mieć id "value" i typ tekstowy - w parametrze wejściowym wtyczka SSO ustawi wartość username z systemu PlusWorkflow użytkownika który został zwrócony przez SSO (czyli wartość zwrócona przez SSO po przetworzeniu przez interceptory jeżeli zostały skonfigurowane)
Parametr wyjściowy powinien mieć id "value" i typ tekstowy - w parametrze wyjściowym źródło danych powinno zwracać wartość do porównania
- VALUE_FROM_DATA_SOURCE_WITH_SSO_USERNAME_AS_INPUT_VALUE - zwrócona zostanie wartość ze źródła danych o identyfikatorze takim jaki zostanie ustawiony w parametrze "param".
Parametr wejściowy powinien mieć id "value" i typ tekstowy - w parametrze wejściowym wtyczka SSO ustawi identyfikator użytkownika zwrócony przez SSO.
Parametr wyjściowy powinien mieć id "value" i typ tekstowy - w parametrze wyjściowym źródło danych powinno zwracać wartość do porównania
manualLogOutRedirect - parametr określa gdzie ma zostać przekierowany użytkownik po kliknięciu w przycisk wyloguj
automaticLogOutRedirect - parametr określa gdzie ma zostać przekierowany użytkownik po wygaśnięciu sesji
authenticationFailedRedirect - parametr określa gdzie ma zostać przekierowany użytkownik po błędnym logowaniu
Parametry do przekierowania składają się z pól:
- redirectType - rodzaj przekierowania. Parametr obowiązkowy. Dostępne są dwie opcje:
- REDIRECT_TO_URL - przekierowuje na adres URL podany w parametrze "value". Url powinien zawierać tylko sam endpoint.
REDIRECT_TO_PAGE_WITH_HTML - wyświetla w okienku wartość podaną w parametrze "value". W parametrze można zamieścić sam tekst lub cały html do wyświetlenia na stronie.
- - localizedValue - parametr opcjonalny. Możemy skonfigurować tutaj wartości dla typu przekierowania dla poszczególnych języków. Jeżeli nie podamy wartości dla języka, który będzie używany w systemie to wartość zostanie pobrana z parametru "value". Parametry podajemy jako obiekt, który jako klucz posiada język. Np
- "pl" : "Witaj", "en" : "Hello!"
Przykładowa konfiguracja POST AUTH HANDLERS
Code Block |
---|
{
"createUserFromDataSourceId": "data_source_id",
"defaultGroupNames": "Administrators,Test",
"extraAuthVerifiers": [
{
"firstVerifierValueProvider": {
"type": "AUTHENTICATION_RESULT_ATTRIBUTE",
"param": "param_name"
},
"secondVerifierValueProvider": {
"type": "VALUE_FROM_DATA_SOURCE_WITH_PWFL_USERNAME_AS_INPUT_VALUE",
"param": "data_source_id"
},
"ignoreCase": true
}
],
"manualLogOutRedirect": {
"redirectType": "REDIRECT_TO_PAGE_WITH_HTML",
"value": "<p style=\"font-weight: bold; font-size: 13px;\">Do widzenia</p>",
"localizedValue": {
"en": "<p style=\"font-weight: bold; font-size: 13px;\">Bye</p>",
"de": "Auf Wiedersehen"
}
},
"automaticLogOutRedirect": {
"redirectType": "REDIRECT_TO_URL",
"value": "/Login.do"
},
"authenticationFailedRedirect": {
"redirectType": "REDIRECT_TO_URL",
"value": "/LoginManual.do"
}
} |
Uwaga! Każda modyfikacja konfiguracji wymaga restartu wtyczki.
...
Jeżeli SSO zwraca adres e-mail użytkownika, można użyć interceptora uwierzytelniania LoginByEmailInterceptor, aby umożliwić logowanie do systemu za pomocą adresu e-mail Interceptory uwierzytelniania.
Jeżeli SSO zwraca inną wartość niż userId w PlusWorkflow, można użyć interceptora uwierzytelniania LoginByDatasourceInterceptor, aby umożliwić logowanie do systemu mapując wartość zwróconą przez SSO z wartością zwracaną przez źródło danych Interceptory uwierzytelniania.