Po aktualizacji ServiceDesk Plus do wersji 9.4 kilku naszych czytelników zgłosiło nam problem z pobieraniem kont użytkowników z Active Directory.

Słowem wstępu

UWAGA!

Wszystkie opisane czynności wykonujesz na własną odpowiedzialność. Autorzy nie ponoszą odpowiedzialności za powstałe szkody.

Problem ten dotyczy głównie instalacji, gdzie liczba OU importowanych do ServiceDesk jest większa niż 300. Wydaje się dużo? W większych organizacjach taka liczba OU wcale nie robi na nikim wrażenia 🙂

Opis problemu

W ServiceDesk Plus 9.4 zostało wprowadzone ograniczenie maksymalnej ilości parametrów przesyłanych do naszej aplikacji. W podstawowej konfiguracji ograniczenie to wynosi 300 przesyłanych parametrów. Co jeśli jednak mamy ponad 300 OU?
Przy wciśnięciu klawisza „Start Importing” ServiceDesk wykonuje następujący request:

url: ImportADUsers.do</pre>
radio=no&userLogin=administrator&selectedOUs=19545&selectedOUs=19587&selectedOUs=19588&selectedOUs=19605&selectedOUs=19589&selectedOUs=19596&selectedOUs=19597&selectedOUs=19688&selectedOUs=19689&selectedOUs=28801&selectedOUs=28802&selectedOUs=28804&selectedOUs=28807&selectedOUs=28810&selectedOUs=28824&selectedOUs=28825&selectedOUs=28826&selectedOUs=28839&selectedOUs=28808&selectedOUs=28811&selectedOUs=28892&selectedOUs=28893&selectedOUs=28837&selectedOUs=28838&selectedOUs=28809&selectedOUs=28812&selectedOUs=28813&selectedOUs=28840&selectedOUs=28814&selectedOUs=28817&selectedOUs=28815&selectedOUs=28816&selectedOUs=28818&selectedOUs=28819&selectedOUs=28827&selectedOUs=28828&selectedOUs=28842&

[...]

&moveAssetsAlso=null&importUser=Start+Importing&selectOUs=Import+Now&serverName=contoso.com&domainName=contoso&userName=importUserAD&userPassword=&isRefresh=true
<pre>

Jak widać ID OU z ActiveDirectory jest przesyłany jako osobny parametr. Jeśli przekroczymy łącznie 300 parametrów to otrzymamy:

This Request will not be considered since passing more duplicate parameters to server might result in vulnerability issues.

I nie będziemy mogli wykonać importu.

W logu (serverout0.txt) znajdziemy:

[01:10:48:105]|[06-10-2018]|[com.adventnet.iam.security.IAMSecurityException]|[INFO]|[3273]: IAMSecurityException ErrorCode: MORE_THAN_MAX_OCCURANCE, RequestURI: "/ImportADUsers.do", RemoteAddr: "192.168.1.106", Referrer: "https://sd.contoso.com/ImportADUsers.do", ParameterName: "selectedOUs", No Of Occurance: "430", Parameter Rule: "ParameterRule :: paramName : "" paramNameInRegex : "null" allowedValueRegex : "" minLength : "0" maxLength : "-1" minOccurrences : "0" maxOccurrences : "300" canonicalize : "false" isParamNameInRegex : "false" dataType : "String" xssValidation : "null" decrypt : "false" salt-delim : "null" salt-ticket : "false" salt-validity : "-1" trim : "false" secret : "false" Range : "null" defaultValue : "null" template : "null" xmlSchemaValidation : "false" jsonArraySize : "0-10" allowEmpty : "null""|
[01:10:48:105]|[06-10-2018]|[com.adventnet.iam.security.SecurityFilter]|[SEVERE]|[3273]: IAMSecurityException Error Code : MORE_THAN_MAX_OCCURANCE |

 

Rozwiązanie

Aby dalej móc importować użytkowników z ActiveDirectory musimy zmienić ustawienia Security naszej aplikacji.

Instrukcja krok po kroku:

  1. Zaloguj się do serwera, na którym zainstalowana jest aplikacja
  2. Przejdź do katalogu X:\manageengine\servicedesk\webapps\root\web-inf\security
    (X: to litera dysku, na którym jest zainstalowana aplikacja)
  3. Znajdź plik security-accesspermissions.xml
  4. Edytuj plik
  5. Znajdź parametr <extraparam description=”To allow extra parameters and values”
  6. Dokonaj edycji wartości parametrów „limit” oraz „max-occurences” wedle własnych potrzeb
  7. Zrestartuj aplikację

Update:

  1. Zaloguj się do serwera, na którym zainstalowana jest aplikacja
  2. Przejdź do katalogu X:\manageengine\servicedesk\webapps\root\web-inf\security
  3. Znajdź plik security-generalaccess.xml
  4. Znajdź parametr:<url path=”/ImportADUsers.do” roles=”SDAdmin” />
  5. Zmień ten parametr na:

    <url path=”/ImportADUsers.do” roles=”SDAdmin”>

    <param name=”selectedOUs” type=”long” max-occurrences=”2000″/>

    </url>

  6. Dostosuj wartość max-occurrences według własnych potrzeb
  7. Zrestartuj aplikacje

I to by było na tyle. Po tej modyfikacji problem nie powinien już występować.