Praca w korpo czasem daje możliwość ze zmierzeniem się z czymś „innym”, tym razem padło na poprawne skonfigurowanie mechanizmu SSO dla aplikacji Confluence.
Po krótce sprawa miała się tak – był stary Confluence (3) siedzący za Apachem na Windows Server, teraz mamy nowego Conflu (5/6) nadal za apachem na Windowsie 🙂
Apache służy jako router dla wielu aplikacji kierując ruch na odpowieni port w zależności jaka domena uderzy do niego.
Zatem zaczynając od początku:
Apache (2.2.8):
httpd.conf:
Całość sprowadza się do aktywacji odpowiednich modułów, konfiguracji jk_module i wskazania konfiguracji vhostów.
Listen 80 ... LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule sspi_auth_module modules/mod_auth_sspi.so ... # Load mod_jk module # Update this path to match your modules location LoadModule jk_module modules/mod_jk.so # Where to find workers.properties # Update this path to match your conf directory location (put workers.properties next to httpd.conf) JkWorkersFile "conf/workers.properties" # Where to put jk shared memory # Update this path to match your local state directory or logs directory JkShmFile "conf/mod_jk.shm" # Where to put jk logs # Update this path to match your logs directory location (put mod_jk.log next to access_log) JkLogFile "logs/mod_jk.log" # Set the jk log level [debug/error/info] JkLogLevel error # Select the timestamp log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # Send everything for context /examples to worker named worker1 (ajp13) JkEnvVar REMOTE_USER ... # Virtual hosts Include conf/vhosts.conf |
vhosts.conf:
Konfiguracja vhostów w tym przypadku mówi nam jak apache ma się zachować w przypadku wejścia z konkretnej domeny. Aby mechanizmy związane z SSO nie psuły nam innych vhostów część konfiguracji jk i SSPI znajduje się tutaj.
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin confluence.domain ServerName confluence.domain <Directory "/"> Order allow,deny Allow from all </Directory> ErrorLog "logs/conf-error.log" CustomLog "logs/conf-access.log" common <IfModule mod_jk.c> JkMount /* worker1 JkOptions +ForwardURICompatUnparsed JkLogFile "logs/conf-mod_jk.log" JkLogLevel error JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " </IfModule> <Location /> AuthType SSPI AuthName "Confluence (domain logon)" SSPIAuth On SSPIAuthoritative On SSPIPerRequestAuth On SSPIOmitDomain On SSPIDomain DOMAIN SSPIOfferBasic On Require valid-user </Location> </VirtualHost> |
workers.properties:
# Define 1 real worker using ajp13 worker.list=worker1 # Set properties for worker1 (ajp13) worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=1234 |
Confluence (5.10):
conf\server.xml:
<Server port="8000" shutdown="SHUTDOWN" debug="0"> <Service name="Tomcat-Standalone"> ... <Connector port="1234" minSpareThreads="5" maxThreads="256" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" tomcatAuthentication="false" URIEncoding="UTF-8"/> |
confluence\WEB-INF\classes\seraph-config.xml:
Wymagane jest aby nasz Confluence miał w folderze confluence\WEB-INF\lib plik JAR z Seraph’em od pixelpark’a – link do maven’a.
<security-config> ... <!-- Custom authenticators appear below. To enable one of them, comment out the default authenticator above and uncomment the one below. --> <authenticator class="com.pixelpark.seraph.confluence.SSOAuthenticator"/> ... </security-config> |
Windows Server:
Group Policy Editor
Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment -> Access this computer from the network – dodajemy grupę która ma mieć dostęp przez SSO (Authenticated Users – da wszystkim użytkownikom którzy mogą się logować na tej maszynie).
I to by było na tyle 🙂
Teraz przy każdorazowym wejściu na adres Confluenca powinniśmy natychmiastowo być zalogowani o ile istnieje na nim nasze konto o identycznej nazwie jak w domenie. Konfigurację LDAP’a zostawiam na inny termin.