Integracja WEBCON BPS z Keycloak

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji 2021.1.x autor: Michał Bednarz

 

Artykuł opisuje sposób integracji WEBCON BPS z Keycloak – oprogramowaniem typu open-source, które służy do zarządzania autentyfikacją oraz tożsamością.

Wymagania

  1. WEBCON BPS StandAlone w wersji 2021, portal dostępny z zastosowaniem SSL po adresie w formacie FQDN.
  2. Keycloak Server (w artykule wykorzystano wersje 12.0.3), witryna dostępna z zastosowaniem SSL po adresie w formacie FQDN.

W niniejszym przykładzie całe oprogramowanie zainstalowano na jednym serwerze, jako reverse proxy zastosowano serwer nginx.

Uwaga: Wykorzystano Keycloak serwer w trybie StandAlone. Nie jest to zalecany tryb w przypadku zastosowania w środowisku produkcyjnym wymagającym wysokiej dostępności.

Instalacja Keycloak serwer opisana jest w dokumentacji produktu -> https://www.keycloak.org/docs/latest/getting_started/index.html#installing-the-server

Instalacja serwera nginx opisana została w artykule -> https://community.webcon.com/posts/post/ssl-offloading-vs-webcon-bps-portal/161

 

Poniżej konfiguracja serwera nginx: (do opublikowania jako code nginx):

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    proxy_busy_buffers_size   512k;

    proxy_buffers   4 512k;

    proxy_buffer_size   256k;

    large_client_header_buffers 4 32k;

 

    server {

        listen 443 default ssl;

        server_name at14.webcon.pl www.at14.webcon.pl;

        ssl_certificate C:/nginx/cert/webcon.crt;

        ssl_certificate_key C:/nginx/cert/webcon.rsa;

        add_header Strict-Transport-Security max-age=2592000;

 

        location / {

            proxy_pass http://at14.webcon.pl:80;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Scheme $scheme;

            proxy_connect_timeout 1;

            proxy_send_timeout 30;

            proxy_read_timeout 30;

        }

    }

 

    server {

        listen 443 ssl http2;

        server_name keycloak.webcon.pl www.keycloak.webcon.pl;

        ssl_certificate C:/nginx/cert/webcon.crt;

        ssl_certificate_key C:/nginx/cert/webcon.rsa;

        add_header Strict-Transport-Security max-age=2592000;

 

        location / {

            proxy_pass http://localhost:8080;    

            proxy_read_timeout 90;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header X-Scheme $scheme;

            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_set_header Host $host;

            proxy_http_version 1.1;

        }

    }

}

 

Konfiguracja realm oraz rejestrowanie aplikacji w Keycloak Server

Należy zalogować się do konsoli administracyjnej Keycloak, następnie zgodnie z dokumentacją produktu: https://www.keycloak.org/docs/latest/getting_started/index.html#creating-a-realm-and-a-user należy utworzyć nowy realm oraz użytkownika.

Kolejnym krokiem jest zarejestrowanie klienta aplikacji. Należy przejść do zakładki Clients, następnie Create. Jako Client Protocol należy wskazać openid-connect:

 

Po zapisaniu należy uzupełnić pozostałe pola konfiguracji:

  • W polu Access Type należy wybrać confidential.
  • W polu Root URL należy wskazać adres witryny Portalu BPS.
  • W polu Valid Redirect URL należy wskazać Redirect URL Portalu. Będzie to adres w formacie https://<fqdn portalu>/signin-<schemat aplikacji openid w konfiguracji BPS>

 

Następnie należy zapisać zmiany i przejść do zakładki Credentials. W polu Client Authenticator należy wybrać Client ID and Secret. Następnie należy skopiować wartość pola Secret.

 

Konfiguracja po stronie WEBCON BPS

Należy przejść do konfiguracji systemu -> Authentication providers i zaznaczyć dodać nowy provider OpenID Connect. Należy uzupełnić konfiguracje:

  • Pole Scheme należy uzupełnić nazwą schematu, ważne aby była zgodna z konfiguracją po stronie Keycloak.
  • Pole Authority oraz Claims Issuer należy uzupełnić adresem utworzonego w Keycloak Realm.
  • Pole Client id należy uzupełnić nazwą aplikacji zarejestrowanej w Keycloak.
  • Pole Client Secret należy uzupełnić wartością sekretu skopiowaną z  Keycloak

 

Następnie należy zapisać zmiany u wykonać restart pooli aplikacji portalu.

Aby móc zalogować się do Portalu użytkownikiem z Keycloak należy dodać go w liście użytkowników BPS. Należy pamiętać że jako identity użytkownika wykorzystany jest adres email.

Należy także nadać uprawnienia do aplikacji lub administracyjne dla nowego użytkownika.

 

Testy działania

Przejście do witryny portalu skutkuje wyświetleniem nowego providera na liście dostępnych providerów:

 

Należy przejść do nowego providera. Nastąpi przekierowanie na stronę authentykacji Keycloak Server nowej aplikacji:

 

Należy zalogować za pomocą dodanych utworzonego wcześniej użytkownika, po prawidłowym zalogowaniu nastąpi przekierowanie do strony portalu: