IBM BPM 8570 z poprawką zbiorczą 3

Zapobieganie atakom typu CSRF (Cross-Site Request Forgery)

Aby zapobiec atakom typu CSRF (Cross-Site Request Forgery), w każdym żądaniu w operacjach interfejsu REST API produktu IBM® BPM Standard powinien być ustawiony nagłówek HTTP BPMCSRFToken.

Aplikacja kliencka musi uzyskać niezbędny znacznik, wywołując interfejs REST API POST /bpm/system/login z treścią JSON, która jest podobna do poniższego przykładu.
{
  "refresh-groups": false,
  "requested-lifetime": 7200
}
Ustawienie wartości właściwości refresh-groups na false pozwala uniknąć narzutu związanego z aktualizowaniem przypisania do grupy dla użytkownika wywołującego, a właściwość requested-lifetime to liczba sekund, przez jaką znacznik będzie ważny. Jeśli właściwość requested-lifetime nie jest określona w żądaniu, używana jest wartość domyślna 7200, która jest maksymalną dopuszczalną wartością.

Znacznik jest zwracany jako łańcuch we właściwości csrf_token obiektu odpowiedzi. Każde wywołanie operacji interfejsu REST API produktu IBM BPM Standard musi zawierać poprawny znacznik w nagłówku HTTP BPMCSRFToken.

Każda próba wywołania interfejsu REST API produktu IBM BPM Standard z użyciem znacznika, który utracił ważność, kończy się niepowodzeniem z kodem odpowiedzi HTTP 403 i kodem error_number CWTBG0651E w odpowiedzi, co oznacza, że weryfikacja znacznika była niemożliwa i znacznik wymaga odnowienia. Aby pobrać nowy znacznik, aplikacja kliencka musi wywołać ponownie interfejs API /bpm/system/login. Aplikacja kliencka może następnie użyć nowego znacznika, aby ponownie wysłać żądanie, które zostało zakończone niepowodzeniem.

Zapamiętaj: W przypadku usługi IBM BPM on Cloud aplikacja kliencka musi używać następującego adresu URL: https://nazwa_hosta.bpm.ibmcloud.com/bpm/środowisko/system/login (gdzie zmienna środowisko ma wartość dev w przypadku środowiska programistycznego, wartość test w przypadku środowiska testowego lub wartość run w przypadku środowiska wykonawczego). Element dotyczący jednego środowiska usługi IBM BPM on Cloud nie jest poprawny w przypadku innego środowiska.