16 kwietnia 2024

Konfiguracja Portainera Community Edition do logowania OAuth 2.0 przy pomocy kont Google

Portainer w odmianie Community Edition nie pozwala na skonfigurowanie logowania przez Google poprzez zaznaczenie opcji Dostawcy Google, gdyż jest to opcja zastrzeżona dla Edycji Biznesowej. Pozostaje nam ręczna konfiguracja atrybutów OAuth 2.0.

Na szczęście jest to dość banalne.

Cały proces trzeba podzielić na 2 etapy:

I. Konfiguracja w konsoli Google Cloud Platform

1. Otwieramy https://console.cloud.google.com

2. Tworzymy nowy projekt.

3. Przechodzimy do zakładki Inmterfejsy API i usługi/Dane logowania.

4. Klikamy Utwórz dane logowania.

5. Wybieramy Identyfikator klienta OAuth

6. Jako typ aplikacji podajemy Aplikacja internetowa

7. Podajemy nazwę naszej aplikacji, np. Portainer.

8. Jako autoryzowane źródła JavaScriptu podajemy:

9. Jako autoryzowane identyfikatory URI przekierowania podajemy:

10. Klikamy Utwórz.

11. Zapamiętujemy (kopiujemy np. do Notatnika na potrzeby punkltu 2 poniżej) wyświetlone Id klienta oraz jego Sekret.

l2. Jeżeli w projekcioe nie mamy jeszcze skonfigurowanego Ekranu zgody OAuth, przechodzimy lub zostaniemy automatycznie przeniesieni do tego ustawienia.

13. Na ekranie zgody, jeżeli z naszego Portainera korzystać będą wyłącznie użytkownicy z naszej domeny, wystarczy zaznaczyć, iż jest to aplikacja wewnętrzna.

Ekran zgody w GCP

W przeciwnym przypadku musimy skonfigurować dodatkowe ustawienia aplikacji, takie jak jej nazwa, opcjonalne logo, adres email do kontaktu dla użytkowników, adres aplikacji, link do polityki prywatności i warunków korzystania z aplikacji, a także wylistować autoryzowane domeny, w których działa aplikacja oraz podać adres email dewelopera aplikacji.


II. Konfiguracja w Portainerze

1. W celu skonfigurowania ustawień w Portainerze, przechodzimy do Settings/Authentication.

2. Zaznaczamy oczekiwany czas trwania sesji - parametr Session lifetime.

3. Wybieramy OAuth jako metodę autentykacji użytkownika (zaznaczenie obok opcji Internal zniknie, ale oczywiście nadal będziemy mogli przy logowaniu wybrać tą metodę logowania.

4. Odznaczamy opcję Use SSO

5. Zaznaczamy Automatic user provisioning (w przeciwnym wypadku trzeba będzie najpierw tworzyć użytkowników w załadce Users.

6. Opcjonalnie przydzielamy nowotworzonych użytkowników do wcześniej utworzonego teamu lub wybieramy opcję No team (bezpieczeniejsze w połączeniu z pkt. 5, gdyż nowoutworzeni użytkownicy nie mają dostępu do żadnych zasobów).

7. Konfigurujemy parametry w sekcji OAuth Configuration:

Client ID: utworzone i zapisane w pkt. I

Client secret: jw.

Authorization URL: https://accounts.google.com/o/oauth2/auth

Access token URL: https://accounts.google.com/o/oauth2/token

Resource URL: https://www.googleapis.com/oauth2/v1/userinfo?alt=json

Redirect URL: <URL naszego Portainera>

Logout URL: https://accounts.google.com/Logout

User Identifier: email

Scopes: email

8. Klikamy Save settings

9. Otwieramy okno incognito naszej przeglądarki internetowej, wpisujemy adres naszego Portainera i wybieramy Login with Google i podajemy dane logowania do naszego konta Google/Google Workspace:

Ekran logowania kontem Google w Portainerze

10. Po zalogowaniu i utwoprzeniu użytkownika, musimy mu nadać dostęp do odpowiednich stackw/kontenerów w środowisku lub uprawnienia Administratora (wg potrzeb). Edycja Community nie obsługuje niestety ról.


Uwaga: Edycja Community Portainera nie obsługuje niestety logów z autentykacji, należy więc bardzo uważnie wprowadzać parametry w aplikacji, aby uniknąć pomyłek.