Instalace Identity Manageru 5.0

Sun Java System Identity Manager (dále jen IDM) slouží pro centralizovanou správu identit. Umožňuje plně kontrolovat a přidělovat práva pro přístup k jednotlivým službám na síti. Automatizuje spoustu úkonů potřebných pro kvalitní správu identit. Pomocí IDM lze delegovat pravomoce na jiná než IT oddělení. Uživatelé si své požadavky vyřeší sami, nemusejí kvůli tomu volat IT.

Sun Identity Manager 5.0 je produkt koupený od společnosti Waveset. Dřív se jmenoval Waveset Ligthouse v 4.1.


Dnes se používá verze 6 a ohlášená je verze 7, takže tento text berte jen jako přibližný návod, protože pár věcí je už jinak. Jakmile vyjde verze 7, tak napíšu nějaký aktuálnější text…


Kapitola 1. Instalace

Pro běh IDM je třeba Java (použijeme JRE 1.4.2 od SUNu) a aplikační server. Dále potřebujeme nějaké úložiště dat. Sice lze ukládat do souborů v režii IDM, ale to není moc vhodné. Pro snadnou dostupnost použijeme třeba MySQL databázi. Protože je IDM kompletně v javě, může běžet na různých operačních systémech.

Oficiálně podporované operační systémy

  • AIX 4.3.3, 5.2

  • HP-UX 11i v1

  • Microsoft Windows 2000 SP3 a novější

  • Microsoft Windows 2003

  • Solaris™ 7 Operating System (OS), Solaris 8 OS, Solaris 9 OS

  • Red Hat Linux Advanced Server 2.1, 3.0

Red Hat je jediná oficiálně podporovaná distribuce Linuxu, ale aplikace samozřejmě běhá i na ostatních. Vyzkoušené mám Slackware 9.1-10.1 a Debian Sarge. Ve Slackware i v Debianu jsem použil tu samou verzi Tomcatu a Javy. Instalaci máme vyzkoušenou také na Microsoft Windows 2003 a Microsoft Windows 2000.

1.1. Java

Instalační balíček Javy pro váš operační systém lze stáhnout na stránce java.sun.com, doporučuji verzi J2EE 1.4 SDK. Javu na Linuxu instaluji vždy do adresáře /opt/java/.
Je dobré nastavit si v ~/.bashrc proměnou JAVA_HOME=/opt/java/ a PATH=/opt/java/bin:$PATH. Pokud nyní spustíte java -version měli byste dostat podobný výstup:

Příklad 1.1. java -version

[tsunami@vodik]$ java -version
java version "1.4.2"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28)
Java HotSpot(TM) Client VM (build 1.4.2-b28, mixed mode)

Nepokoušejte se rozebíhat na Debianu Tomcat z distribuční Javou (není to ta od SUNu), pokud se vám Tomcat rozeběhne, tak stejně nebude IDM fungovat.

1.2. Aplikační server

Podporované aplikační servery

  • Apache Tomcat 4.1.x[*], 5.0.x[*]

  • BEA WebLogic Express 7, 8.1[*]

  • BEA WebLogic Server 7.0, 8.1[*]

  • IBM WebSphere 4, 5

  • iPlanet™ Application Server 6.5

  • Sun™ ONE Application Server 6.5

  • Sun Java System Application Server Platform Edition 8

Jako aplikační server použijeme Tomcat. Instaloval jsem Tomcat na OS Linux a na každé zkoušené distribuci to bylo trochu jiné. Pokud chcete využít balíčkovacího systému své distribuce, najděte si k tomu manuál.

Postupně jsem si odladil jednu instalaci, kterou používám všude. Protože je Tomcat aplikace napsané v Javě, můžu si ji zabalit do archívu a přenést na jiný počítač s jinou distribucí Linuxu aniž by to mělo větší vliv na funkčnost.

Instalace z mého balíčku (Příloha A – „Stažení potřebného software) spočívá v rozbalení pomocí tar -xzf tomcat.tar.gz, rozkopírování na správná místa na disku. Archív je zabalený tak abyste ho mohli rozbalit přímo do / a soubory se rozmístí správně v adresářích. Dále je třeba abyste si vyrobili uživatele tomcat s domácím adresářem /var/spool/tomcat. Nastavte majitele u adresářů /var/log/tomcat, /var/spool/tomcat, /var/tomcat a /etc/tomcat na tomcat. Je důležité přesně dodržet všechny názvy a cesty zde popisované, jinak nebude aplikační server správně fungovat. V souborech /etc/profile.d/j2sdk.sh a /etc/profile.d/tomcat.sh zkontrolujte nastavení systémových proměnných, případně je upravte na svůj počítač. Instalace tomcatu předpokládá, že máte nainstalovaný Apache webserver, který spouštíte pomocí /etc/init.d/apache, pokud tomu je jinak, upravte si /etc/init.d/tomcat. Nyní byste měli spustit tomcat pomocí příkazu /etc/init.d/tomcat start.

Po nastartování poslouchá tomcat na tcp portu 8080. Uživatel pro přihlášení s největšími právy se jmenuje admin a jeho heslo je athttp.


[*] Pro správnou funkčnost potřebuje JDK™ verze 1.4.2

1.3. Databáze

Pro ukládání dat lze použít následující úložiště:

Úložiště dat

  • Lokální soubory

  • MySQL 4.0.x, 4.1.x

  • Oracle 8i and Oracle 9i

  • IBM DB2 Universal Database pro Linux, UNIX® a Microsoft Windows (verze 7.0, 7.2)

  • Microsoft SQL Server 2000

  • JDBC 2.0 Data Source

  • Sun Java System Directory Server 5.2

Základní instalaci jsem prováděl s databází MySQL. Instalaci MySQL databáze proveďte podle postupů obvyklých ve vaší distribuci Linuxu. Založení databáze a nastavení práv pro uživatele waveset pro přístup k ní se provede pomocí SQL skriptu dodávaném s IDM.

1.4. Identity Manager – instalace

Instalace IDM je celkem jednoduchá. Spouští se pomocí skriptu ./install a předpokládá, že máte správně nastavenou proměnou JAVA_HOME. Nainstalujte IDM do adresáře /opt/tomcat/webapps/idm. Utilitu pro nastavení (Setup) přeskočte a ukončete instalaci.

Pro počáteční nastavení IDM potřebujeme podporu pro MySQL do Javy. Soubor mysqljdbc.jar (příloha A – „Stažení potřebného software) nakopírujte do adresáře /opt/tomcat/webapps/idm/WEB-INF/lib/. Nastavte si proměnou prostředí WSHOME (export WSHOME=/opt/tomcat/webapps/idm a spusťte $WSHOME/bin/lh setup. Mělo by na vás vyskočit okno podobné tomu na obrázku 1.1 – „Sun Setup Wizard“.

Obrázek 1.1. Sun Setup Wizard

Sun Setup Wizard

Dialog odklikneme a nastavíme připojení k databázi (Obrázek 1.2 – „Locate IDM Repository“). Předvolený uživatel je waveset s heslem waveset. Samozřejmě je možné mít MySQL na jiném stroji než localhost, záleží jak si vše nastavíte. Pokud je někde v nastavení chyba nebo jste nenakopírovali do $WSHOME/WEB-INF/lib soubor mysqljdbc.jar, nástroj vás na to upozorní, zkouší se totiž na MySQL databázi připojit.

Obrázek 1.2. Locate IDM Repository

Locate IDM Repository

Naimportujte licenční xml soubor, mělo by se ukázat zda je licence v pořádku (1.3 – „License Key“).

Obrázek 1.3. License Key

License Key

Poslední dialog (1.4 – „Import XML Files“) umožňuje naimportovat výchozí konfiguraci, udělejte to kliknutím na tlačítko Import file. Soubor /opt/tomcat/webapps/idm/sample/idm.xml by měl být automaticky předvolený. Po ukončení programu restartujte aplikační server aby se načetly všechny změny.

Obrázek 1.4. Import XML Files

Import XML Files

1.5. IDM a Sun Java System Application Server 7

Instalaci IDM spustíme a provedeme do adresáře /opt/idm. IDM si s sebou nese šifrovací knihovny, standardní instalace aplikačního serveru od SUNu má ale svoje, takže ty z IDM smažeme. Z adresáře /opt/idm/WEB-INF/lib/ smažeme soubory cryptix-jce*. Dále je třeba do adresáře /opt/idm/WEB-INF/lib/ nakopírovat knihovnu providerutil.jar.

Nastavíme WSHOME na /opt/idm a provdeme konfiguraci pomocí $WSHOME/bin/lh setup. Data jsem ládoval do Directory serveru dodávaného spolu s aplikačním serverem v rámci balíku Sun Java Enterprise System.

Instalace IDM do aplikačního serveru se skládá ze dvou kroků. Nejdříve pomocí programu jar (cd /opt/idm; jar cvf ../idm.war *) vyrobíme /opt/idm.war, který potom vnutíme aplikačnímu serveru. Příkaz pro deploy aplikace do aplikačního serveru (vše na jednom řádku): /opt/SUNWappserver7/bin/asadmin deploy –user admin –name idm –password HesloAdmina /opt/idm.war.

V případě, že máte v aplikačním serveru instalován program Access Manager, je třeba v souboru /etc/opt/SUNWam/config/AMConfig.properties upravit jeden řádek (com.sun.identity.jss.donotInstallAtHighestPriority=true). Po této úpravě se může stát, že budete mít problémy s ověřením do AM pomocí klientského certifikátu. Vše je způsobeno tím, že takzvaný security provider se sdílí napříč celou JVM a není izolován pouze v dané aplikaci.

Bohužel chyba vypisované při konfliktu s AM nic nanpoví:

java.lang.IllegalStateException: Error initializing Encryptor: null

Lepší způsob je udělat si druhou instanci aplikačního serveru a do něj nainstalovat pouze IDM. Neváhodou je, že to spotřebuje víc paměti, protože je to další běžící aplikační server. Také potřebujete další TCP port, na kterém bude druhý aplikační server poslouchat.

Kapitola 2. Administrace

2.1. Správa aplikačního serveru

2.1.1. Tomcat

Následující věty platí, pokud jste pro instalaci použili mnou udělaný archív s aplikačním serverem Tomcat a postupovali jste dle mého návodu. V případě, že jste prováděli jinou instalaci se můžou některé údaje lišit a budete se muset přizpůsobit.

Po nastartování databáze a aplikačního serveru pomocí příkazů /etc/init.d/mysql start a /etc/init.d/tomcat start byste měli na TCP portu 8080 najít výchozí stránku aplikačního serveru. Login a heslo pro aplikační server jsou nastaveny v souboru /opt/tomcat/conf/tomcat-users.xml. Soubor obsahuje nezašifrované hesla! Největší práva pro aplikační server a má uživatel „admin“ s výchozím heslem „athttp“.

Základní adresy pro správu Tomcatu

  • http://localhost:8080/ – „domácí“ stránka Tomcatu

  • http://localhost:8080/manager/status – Server Status

  • http://localhost:8080/admin/ – Tomcat Web Server Administration Tool

  • http://localhost:8080/manager/html – Tomcat Web Application Manager

  • http://localhost:8080/idm – Identity Manager

2.2. Organization and Capabilities

Organizace v IDM jsou hierarchicky organizované. Nejvýše postavenou organizací je Top. Použitá hierarchická struktura slouží k delegování administrace.

Capabilities jsou skupiny s předdefinovanými právy a autorizací k IDM.

Kapitola 3. Zdroje (Resources)

3.1. XML soubor

Pro někoho je zajímavá možnost zadat jako další resource XML soubor, do kterého se budou zapisovat vytváření uživatelé. Postup pro vytvoření takového souboru:

Definice nového zdroje

  • Přesuňte se na stránku Configure -> Manages resources a klikněte na Add custom resource (dole na stránce).

    Obrázek 3.1. Manage resource

    Manage resource
  • Vložte text com.waveset.adapter.XMLResourceAdapter a uložte.

    Obrázek 3.2. Add custom resource

    Add custom resource
  • Teď se doporučuje restart aplikačního serveru, ale mě to funguje i bez restartu.

3.2. Windows NT

Pro připojení IDM k Microsoft Windows řady NT je třeba zvláštní gateway. Gateway beží na Windows jako služba a umožňuje práci s uživatelskými účty.

3.2.1. Instalace

Rozbalte archív gateway.zip umístěný v adresáři IDM5.0 na CD-ROM. Osobně jsem pro umístění do adresáře c:\idmgw\. Spusťte si příkazový řádek (Start->Run…, cmd) a v něm proveďte instalaci brány (gateway -i) a její prní spuštění (gateway -s). Gateway se pak ve výpisu služeb objeví pod názvem Sun Identity Manager Gateway.

3.3. RedHat Linux

Konektor pro RedHat Linux je dodáván standardně s IDM. Připojení je možné přes protokol SSH nebo Telnet. Konektor je napsán trochu nešikovně a neumožňuje spolupráci například s distribucí Debian. Je to způsobeno využíváním parametru pro program useradd, který je v Debianu trochu jiný než v RedHatu.

3.4. Sun ONE Identity Server

Resource adaptér pro Sun ONE Identity Server (Access Manager) je dostupný jako com.waveset.adapter.SunISResourceAdapter

3.4.1. Instalace

Pokud provozujete Sun ONE Identity Server na jiném systému než IDM, tak je třeba provést pár kroků pro jeho integraci do IDM.

  • Vytvoříme adresář /opt/SUNWam do kterého nakopírujeme potřebné knihovny Identity Serveru.

  • Do adresáře /opt/SUNWam nakopírujte soubory lib/*.*, locale/*.properties, config/serverconfig.xml a configu/ums/ums.xml. Soubory skutečně jen nakopírujte, nevytvářejte pro ně odpovídající adresářové struktury. Je vhodné povolit přístup k soubrům (chmod a+r /opt/SUNWam/*).

  • Do proměnné CLASSPATH je třeba přidat /opt/SUNWam:/opt/SUNWam/am_sdk.jar:/opt/SUNWam/am_services.jar:/opt/SUNWam/am_logging.jar (CLASSPATH=CLASSPATH:/opt/SUNWam:/opt/SUNWam/am_sdk.jar:/opt/SUNWam/am_services.jar:/opt/SUNWam/am_logging.jar).

  • Pro Identity Server verze 6.0 je potřeba předat javě parametr -Dcom.iplanet.coreservices.configpath=/opt/SUNWam.

    Pokud požíváte verzi 6.1, tak upravte v souboru/opt/SUNWam/AMConfig.properties

    com.iplanet.services.configpath=/opt/SUNWam
    com.iplanet.security.SecureRandomFactoryImpl=com.iplanet.am.util.SecureRandomFactoryImpl
    com.iplanet.security.SSLSocketFactoryImpl=netscape.ldap.factory.JSSESocketFactory
    com.iplanet.security.encryptor=com.iplanet.services.util.JCEEncryption
    

  • Nakopírujte soubory /opt/SUNWam/am_*.jar do adresáře $WSHOME/WEB-INF/lib. Pokud používáte verzi 6.0, nakopírujte tam i soubour jss311.jar.

3.4.1.1. Policy Agent

Na Identity Serveru musí být nainstalován i Sun ONE Identity Policy Agent 2.1 (http://wwws.sun.com/software/download/inter_ecom.html#dirserv).

3.4.1.1.1. AMAgent.properties

3.5. LDAP

Kapitola 4. Lokalizace

Lokalizace do češtiny je v ČR jedním z důležitých úkolů při implementaci téměř kteréhokoliv programu, se kterým se mají setkávat běžní netechnicky vzdělaní uživatelé.

4.1. Úložiště dat

4.1.1. MySQL

Pro správné zacházení s diakritikou v ukládaných datech o uživatelích je třeba nastavit parametry připojení pomocí jdbc (Obrázek 1.2 – „Locate IDM Repository“). Parametr se zadává na konec URL. Výsledné URL vypadá takto:

jdbc:mysql://localhost/waveset?useUnicode=true&characterEncoding=utf-8

4.2. Uživatelské rozhraní

Pro správnou funkčnost lokalizace je třeba v souboru ${WSHOME}/config/

Kapitola 5. Troubleshooting

V IDM existuje stránka s ladícími výpisy, ale není v oficiálním menu, které je dostupné administrátorovi. Její URL http://localhost:8080/idm/debug je třeba znát z hlavy.

5.1. java.lang.NoClassDefFoundError: javax/mail/MessagingException

Pokud se vým ukáže tato chyba, znamená to, že tomcat nevidí knihovnu s danou třídou. V tomto případě je to soubor mail.jar, který je třeba nakopírovat do adresáře /opt/tomcat/common/lib.

Příloha A. Stažení potřebného software

Tabulka A.1. Stažení potřebného software

software domácí stránka stažení velikost
Apache Tomcat/5.0.28 jakarta.apache.org/tomcat tomcat.tar.gz(můj balíček) 11 MiB
MySQL JDBC mysqljdbc.jar 221K

Access Manager a Windows Desktop SSO

Modul WindowsDesktopSSO obsažený v Access Manageru slouží k automatickému přihlášení k webové aplikaci pomocí protokolu Kerberos. Podle názvu vám asi došlo, že přebírá informace o přihlášení z MS Windows (v síti s Active Directory, tam se totiž Kerberos používá). Protože se používá Kerberos je možné například přebírat přihlášení z libovolného kerberizovaného operačního systému, provozuji linux a při instalaci to testuji z prohlížeče Konqueror. Závisí to na použitém webovém prohlížeči, musí umět s Kerberem pracovat (seznam otestovaných).

Konfigurace autentizacniho modulu WindowsDesktopSSO není nijak zvlášť složitá:

Service Principal: HTTP/portal.domena.local@DOMENA.LOCAL
Keytab File Name: /etc/opt/sun/portal.HTTP.keytab
Kerberos Realm: DOMENA.LOCAL
Kerberos Server Name: kerberosi-server.domena.local

Potřebné informace pro konfiguraci najdete v oficiální dokumentaci Manual Sun Java System Access Manager 7 2005Q4 Administration Guide (popis přímo WindowsDesktopSSO, v pdf je to snad strana 86)

Jako výchozí způsob pro přihlášení uživatele do Access Manageru je standardně modul LDAP. Pro aktivaci WindowsDesktopSSO modulu je třeba přidat do URL přihlašovací stránky parametr module=WindowsDesktopSSO.

Přihlašovací URL pak vypadá například takto:

http://portal.domena.local:8080/amserver/UI/Login?module=WindowsDesktopSSO

Samozřejmě je možné nastavit tento modul jako výchozí no a když selže tak na chybové stránce hodit odkaz na přihlášení proti LDAPu.

Změna hesel použitých pro instalaci

Níže popsané postupy pro změnu hesel jsou možná pro někoho složité nebo dívné, ale takto mi to funguje a v dokumentaci jsem nic pořádného nevyčetl. Vše se týká celkem standardní instalace aplikačního serveru, Access Manageru a Portálu verze 7.

1. amldapuser

amldapuser je uživatel vytvořený během instalace a je užíván pro přihlášení a vyhledávání v adresářovém serveru během LDAP a Membership autentizace (moduly v Access Manageru). Služby LDAP a Membership jsou registrované v Access Manageru u organizace a musí tam být zadané i heslo pro uživatelel amldapuser.

V amconsoli (http://server:port/amconsole) se musí nastavit u služby Membership a LDAP nové heslo.

Dalším krokem je změna hesla v adresářovém serveru: do administrační konzole adresářového serveru se přihlaste jako cn=Directory Manager a změňte heslo pro uživatele amldapuser.

Taky to chce změnit heslo v /etc/opt/sun/identity/config/AMConfig.properties, konkrétně položku com.iplanet.am.service.secret, položka se generuje néstrojem /opt/sun/identity/bin/ampassword (parametr -e).

Dále je třeba změnit heslo v každém AM Policy Agentovi, který je na AM nasměrován (postup je dobře popsán v dokumentaci k Policy Agentovi).

2. admin

2.1. Aplikační server

Uživatel admin slouží pro správu aplikačního serveru přes administrační konzoli případně se jeho heslo může hodit u CLI klienta.

V souboru /var/opt/sun/appserver/domain/domain1/config/admin-keyfile je SSHA hash hesla pro admina.

Přes asadmina jsem si udělal novou doménu s novým heslem a ten soubor z ní překopíroval do domain1.

Nevím jestli existuje jednodužší postup, ale tenhle je 100% funkční :-).

2.2. Adresářový server

Admin v aplikačním serveru je jiný uživatel než ten v adresářovém serveru. Změna uživatele pro adresářový server je jednoduchá: v administrační konsoli adresářového serveru je třeba vlézt do admin serveru, tam v menu pro konfiguraci změnit heslo uživatele admin.

3. amService-srapGateway

Uživatel amService-srapGateway se používá v komponentě Gateway u SRA (portálový server).

Na všech bežících instancích SRA je třeba provést psadmin change-loguser-password

Nové heslo napište do /opt/sun/portal/admin/.passwdfile

change-loguser-password --adminuser amadmin \
-f /opt/sun/portal/admin/.pwdfile \
--newpasswordfile /opt/sun/portal/admin/.passwdfile --name default

Po provedení této změny je potřeba v LDAPu nastavitné heslo uživateli uid=amService-srapGateway,ou=agents,dc=DOMENA,dc=TLD.

4. cn=Directory Manager

cn=Directory Manager je vlastně takový root v adresářovém serveru, má největší oprávnění. Jeho heslo je zaznamenáno v konfiguraci portálového serveru.

Jako první krok se změní heslo v portálu aby korektně nabíhalo SRA a správně fungoval nástroj psadmin.

Nové heslo se zapíše do souboru /opt/sun/portal/admin/.passwdfile2 (jen heslo, nic víc). Poté je třeba spustit příkaz pro změnu hesla:

/opt/sun/portal/bin/psadmin set-domain-repository-password \
--adminuser amadmin -f /opt/sun/portal/admin/.pwdfile \
--debug /opt/sun/portal/admin/.passwdfile2

Tento program změní soubor /etc/opt/sun/portal/domains/defaultDomain/PortalDomainConfig.properties, kde to přidá hodnotu k parametru „domain.data.credentials„, tady odsud jsem hodnotu přesunul do parametru „domain.users.datastore.manager.password„.

Další krok je změna hesla v adresářovém serveru:

[root@srvpor01 slapd-INSTANCE]# pwd
/var/opt/sun/directory-server/slapd-INSTANCE
[root@srvpor01 slapd-INSTANCE]# ./getpwenc SSHA NEWPASSWORD
{SSHA}lsFgSfS1dJprjbbZcKkspq2OC6oFJIkOYkFacg==
[root@srvpor01 slapd-INSTANCE]# ./stop-slapd
[root@srvpor01 slapd-INSTANCE]# vi config/dse.ldif
u parametru nsslapd-rootpw se zapíše získaný hash
[root@srvpor01 slapd-INSTANCE]# ./start-slapd

5. amAdmin

amAdmin je uživatel s největšími oprávněními pro Access Manager.

V konzoli LDAPu je potřeba změnit heslo uživatele amAdmin.

V initscriptu se používá soubor /opt/sun/portal/admin/.pwdfile tam se zapíše nové heslo.

6. puser

Heslo pro uživatele puser je v /etc/opt/sun/identity/config/serverconfig.xml a mění se pomocí nástroje ampassword.

/opt/sun/identity/bin/ampassword -p -o OLDPASSWORD -n NEWPASSWORD

7. dsameuser

Heslo pro uživatele dsameuser je v /etc/opt/sun/identity/config/serverconfig.xml a mění se pomocí nástroje ampassword.

/opt/sun/identity/bin/ampassword -a -o OLDPASSWORD -n NEWPASSWORD

Pokud používáte s Sun Java Identity Manager a spravujete v něm Access Manager, nezapomeňte aktualizovat soubor serverconfig.xml také na serveru, kde je nainstalován IdM.