OpenAM – propagace vlastních atributů

Access manager OpenAM nabízí široké možnosti konfigurace. Jednou z nich je i možnost upravovat výchozí schémata a například je rozšiřovat o další atributy. V článku si povíme, jak na to.

Schémata

OpenAM uchovává svou konfiguraci v takzvaných services (služby). Tyto služby obsahují, co přesně za atributy má access manager zpracovávat a jak se k nim má chovat. Při nastavování OpenAM se na disku serveru sice vytvoří adresář s konfigurací, ale samotné služby jsou uloženy v nastaveném datovém úložišti (relační databáze nebo ldap). Základní schémata, tak jak byla inicializována, najdete v adresáři $cesta_k_openam_konfiguraci/config/xml ve formě xml souborů.

Například základní schéma pro uživatele vypadá takto:

<ServicesConfiguration>
    <Service name="iPlanetAMUserService" version="1.0">
        <Schema
            serviceHierarchy="/DSAMEConfig/iPlanetAMUserService"
            i18nFileName="amUser"
            i18nKey="iplanet-am-user-service-description"
	    revisionNumber="50">
	    <Global>
                <AttributeSchema name="serviceObjectClasses"
                    type="list"
                    syntax="string"
		    i18nKey="">
		    <DefaultValues>
                        <Value>iplanet-am-user-service</Value>
		    </DefaultValues>
		</AttributeSchema>
	    </Global>

            <Dynamic>
                    <AttributeSchema name="preferredlanguage"
                    type="single"
                    syntax="string"
                    any="display"
                    i18nKey="">
		</AttributeSchema>
	       <AttributeSchema name="preferredtimezone"
                    type="single"
                    syntax="string"
                    any="display"
                    i18nKey="d102">
		</AttributeSchema>
	        <AttributeSchema name="preferredlocale"
                    type="single_choice"
                    syntax="string"
	       any="display"
                    i18nKey="">
		<ChoiceValues>
		     <ChoiceValuesClassName
			    className="com.sun.identity.common.admin.PossibleLocales" />
		     </ChoiceValues>
	      </AttributeSchema>
...
...
...
                  <AttributeSchema name="RequiredValueValidator"
                    type="validator"
                    syntax="string">
                    <DefaultValues>
                        <Value>com.sun.identity.sm.RequiredValueValidator</Value>
                    </DefaultValues>
                </AttributeSchema>
            </User>
        </Schema>
    </Service>
</ServicesConfiguration>

Zde nás budou zajímat AttributeSchema, která doplníme podle potřeby. Náš nový skvělý atribut pak bude definován třeba následovně:

<!-- 
	name - jméno atributu v ldapu
	type - grafické znázornění atributu v AM (single,single_choice,list,...)
	syntax - typ položky (string,number,email,password,...)
	any - další parametry (display,adminDisplay,required,...)
	i18nKey - popis atributu, který se zobrazí v gui
-->
<AttributeSchema name="novySkvelyAtribut"
		type="list"
		syntax="string"
		any="display"
		i18nKey="novySkvelyAtribut">
</AttributeSchema>

Tuto definici přidáme do xml souboru s definicí služby (v tomto případě amUser.xml).

Aktualizace služby

Tím jsme ale pouze změnili definici služby na disku. Změnu musíme ještě nahrát do access manageru, sama se totiž nenačte. K tomu nám pomůže nástroj ssoadm.

Utilita ssoadm je součástí archivu, ve kterém je OpenAM distribuováno. Jedná se o jeden z takzvaných „tools“. Instalace tools je přímočará:

[fiisch@amt tools]$ cd $rozbalene_openam/tools/
[fiisch@amt tools]$ ./setup

Při instalaci se skript zeptá na cestu ke konfiguraci OpenAM, která se nachází na disku. Po dokončení instalace můžeme ssoadm použít.

Vytvoříme si soubor, do kterého zapíšeme heslo na uživatele amAdmin (nebo jiného s admin právy). Pak provedeme aktualizaci:

[fiisch@amt tools]$ echo "heslo_amadmina" > amadmin.passwd
[fiisch@amt tools]$ chmod 600 amadmin.passwd
[fiisch@amt tools]$./ssoadm update-svc -X $cesta_k_openam_konfiguraci/config/xml/amUser.xml -u amadmin -f amadmin.passwd

Pokud vše proběhne v pořádku, dojde v úložišti access manageru k aktualizaci služby. Ta je od tohoto okamžiku aktivní, vše funguje bez restartů. Finální výsledek si můžete prohlédnout na obrázku.

openam_atribut

Závěr

Dnes jsme si ukázali, jak lze jednoduchým způsobem modifikovat schémata v access manageru OpenAM. Velkou výhodou je, že tyto modifikace se projevují i ve webové službě access manageru. Pokud by vás daná problematika zajímala více, neváhejte napsat na info@bcvsolutions.eu!