Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

     Przykład: https://www.test.plusworkflow.pl/PlusWorkflow/LoginManual.do

 

Konfiguracja SSO - jest to

...

konfiguracja systemu SSO dla rozwiązania Azure-EntraId.

Info

SSO przeważnie konfiguruje nam klient po przesłaniu do niego danych opisanych niżej (entity id, reply url, SLO, certyfikaty) . Klient może wymagać przesłania SP XML metadata descriptora, który zawiera te wszystkie dane zamiast poszczególnych danych osobnojako SAML ServiceProvider metadata descriptor xml (generowanie pliku opisane niżej).

Dodajemy aplikację za pomocą Microsoft Entra ID -> Aplikacje dla przedsiębiorstw -> Nowa aplikacja

...

Generowanie SAML ServiceProvider metadata descriptor'a w xml:

Generator metadanych dla klienta z parametrami niezbędnymi do skonfigurowania SSO po stronie IdP znajduje się w pliku "Suncode SAML SP metadata generator.html".

Suncode SAML SP metadata generator.html

Generowanie certyfikatu x.509 pem opisane niżej "Tworzenie keys store jks".

 

Konfiguracja połączenia do SSO z PlusWorkflow 

W systemie PlusWorkflow konfigurujemy:

 

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. 
    - value - wartość dla typu przekierowania. Jest to domyślna wartość dla wszystkich języków, których nie skonfigurujemy w parametrze localizedValue. Parametr jest opcjonalny jeżeli skonfigurujemy wszystkie interesujące nas języki w parametrze localizedValue
  • - 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.