Dotyczy wersji 2019.1.4.x; autor: Michał Bednarz
W przypadku implementacji systemu opartego o autentykacje AAD może zajść konieczność tworzenia zarządzania użytkownikami bezpośrednio w O365 z poziomu WEBCON BPS. BPS dostarcza dedykowane akcje dla lokalnego AD. W przypadku AAD możemy wykorzystać standardowe akcje dostępne w BPS (akcja wywołania REST) oraz REST Service Microsoft Graph.
1. Przygotowanie aplikacji po stronie AAD
W konsoli zarządzania AAD należy zarejestrować nową aplikację. Wykonuje się to analogicznie do procesu rejestracji aplikacji do synchronizacji listy użytkowników BPS (https://kb.webcon.pl/synchronizacja-listy-uzytkownikow-bps/).
Różnica pojawia się w sekcji API Permissions, nowej aplikacji nadajemy następujące uprawnienia:
2. Tworzenie użytkownika w AAD za pomocą akcji wywołania REST
Metody z których możemy skorzystać do zarządzania obiektem użytkownika w AAD opisane są w dokumentacji https://docs.microsoft.com/en-us/graph/api/resources/users?view=graph-rest-beta Użytkownika tworzymy za pomocą https://docs.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-beta&tabs=http
W procesie warto utworzyć atrybut User ID – będziemy w nim przechowywać ID użytkownika z AAD, ID będzie konieczne do późniejszego zarządzania utworzonym użytkownikiem.
2.1. Konfiguracja źródła danych dla połączenia z Graph
Dane konieczne do autentykacji pobieramy z konfiguracji aplikacji z AAD analogicznie jak w przypadku aplikacji do synchronizacji listy użytkowników BPS (https://kb.webcon.pl/synchronizacja-listy-uzytkownikow-bps/).
2.2. Konfiguracja akcji wywołania REST – tworzenie użytkownika w AAD
W pierwszej zakładce wybieramy skonfigurowane wcześniej połączenie:
W kolejnej konfigurujemy REST suffix oraz wybieramy metodę HTTP, w przypadku tworzenia użytkownika będzie to POST:
Kolejny etap to przekazanie obiektu użytkownik w formacie JSON, lista atrybutów obiegu user dostępna jest w dokumentacji Graph.
Jeśli chcemy przekazać do elementu BPS dane z odpowiedzi konieczna jest również konfiguracja zakładki Response. W przypadku wywołania Graph wczytanie wartości zakończy się niepowodzeniem, jeśli zakładka JSON zawiera parametry (wąsy). Aby ominąć ten problem należy uzupełnić potrzebne dane bezpośrednio w zakładce JSON. Wykonujemy to jednorazowo podczas konfiguracji. Uwaga: Wczytanie konfiguracji spowoduje wywołanie metody, a co za tym idzie utworzenie użytkownika. W tym konkretnym przypadku interesuje nas ID utworzonego obiektu:
2.3. Konfiguracja akcji REST – tworzenie grupy AAD
W przypadku grup korzystamy z obiektu https://docs.microsoft.com/en-us/graph/api/resources/group?view=graph-rest-beta oraz metody https://docs.microsoft.com/en-us/graph/api/group-post-groups?view=graph-rest-beta&tabs=http
Konfiguracja zakładek Autentication oraz Request data jest analogiczna jak w przypadku tworzenia użytkownika.
W zakładce JSON wskazujemy atrybuty dla grupy AAD:
W zakładce Response wczytujemy dane w sposób analogiczny jak w przypadku tworzenia użytkownika, ID nowego obiektu zapisujemy w odpowiednim atrybucie:
2.4. Konfiguracja akcji REST – zarządzanie zawartością grup AAD
Podobnie jak w poprzednim punkcie korzystamy z obiektu Group, a konkretnie dodajemy użytkownika do grupy https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-beta&tabs=http
Konfiguracja zakładki Authentication jest taka sama, jak w przypadku poprzednich akcji.
W zakładce Request data w polu REST suffix wskazujemy ID grupy AAD na której przeprowadzamy operacje modyfikacji. Metoda HTTP to w dalszym ciągu POST:
W zakładce JSON przekazujemy obiekt użytkownika, którego chcemy dodać do grupy:
W przypadku modyfikacji zawartości grup, Graph zwraca status HTTP 204 w przypadku powodzenia. Nie ma potrzeby modyfikacji zakładki Response (response body jest puste).
W przypadku implementacji zaawansowanych scenariuszy ID obiektów z AAD możemy pobrać z tabeli CacheOrganizationStructure – jeśli AAD jest źródłem synchronizacji listy użytkowników BPS.
W przykładach tych przedstawiliśmy tylko kilka możliwości z bardzo wielu udostępnionych przez Microsoft Graph.