Archiv pro štítek: Konektor

CzechIdM a Exchange 2007

U jednoho našeho zákazníka se rozhodli přejít z dnes už poměrně zastaralého mailserveru MS Exchange 2003 na novější verzi MS Exchange 2007. O uživatelské účty v informačním systému se už několik let stará Identity Management – na mailserveru zakládá a aktualizuje účty, nepoužívané účty blokuje. Pojďme se podívat, co migrace znamenala pro Identity Mangement CzechIdM, jaké úpravy jsme museli provést a čím se Exchange 2007 od Exchange 2003 z hlediska napojení liší.

schemata

Pokračování textu

Identity Manager – Jak připojit systém Vema

U zákazníka v ČR jsme připojovali náš Identity Manager CzechIdM na personalistiku od brněnské firmy Vema. Aplikace Vema je využívána pro evidenci zaměstnanců, a proto představuje primární zdroj informací o uživatelích. CzechIdM má na starosti správu uživatelských účtů postupně ve všech systémech organizace zákazníka. V tomto příspěvku tedy popíši, jak jsme řešili napojení CzechIdM na systém Vema.

Pokračování textu

Možnosti připojení CzechIdM na vzdálené systémy

Identity Manager CzechIdM umožňuje spravovat uživatelské účty na vzdálených systémech prostřednictvím vhodných konektorů či adaptérů. Jedná se o komunikační rozhraní využívající standardní protokoly ke komunikaci a správě koncového systému. Většina z nich podporuje tzv. bezagentový přístup, což znamená, že na straně koncového systému není potřeba provádět žádné dodatečné změny. Pouze připojení do OS MS Windows (Active Directory) potřebuje na straně spravovaného systému instalaci agenta.

Pokračování textu

Identity manager – jak funguje propojení konektor / cache / vyhledávání

Tento příspěvek vzniknul úpravou dotazu a mé odpovědi na webu http://www.abclinuxu.cz

Jak to v Identity Manageru (IdM) vlastně pořádně funguje? Jak jsou načítány a ukládány údaje z koncových systémů? Dejme tomu že mám uživatele v Active Directory či nějaké SQL databázi. Každý uživatel může mít několikrát definován nějaký atribut (třeba skupina). Když k tomu budu chtít připojit Identity Manager, jak se s těmito atributy vypořádá?

Pokračování textu

Vytvoření vlastního resource adaptéru pro Sun Identity Manager


Tento článek popisuje, jakým způsobem je možné naprogramovat vlastní „Standard Resource Adapter“ pro produkt Sun Identity Manager, respektive Oracle Waveset 8.1. Při psaní jsem vycházel ze zkušeností, které jsem společně s kolegy nasbíral při programování „univerzálního SSH adaptéru pro unixové systémy (pro Linux, AIX, HP-UX, Solaris a Sambu)“ .

Pokračování textu

Připojení Sun Identity Manageru k SAP Basis

Tento příspěvek stručně informuje o problematice připojení SAPu (testováno na verzi SAP R/3) k Sun Identity Manageru (IdM) a popisuje pár praktických příkladů.

SAP Basis (business application software integrated solution) mimo jiné obsahuje sadu nástrojů pro administraci systému a uživatelů SAPu. Právě druhé zmíněné nás zajímá. Naším cílem je napojení Sun Identity Manageru (IdM), tak abychom pomocí něho mohli spravovat uživatele.

Pro připojení externích programů je v SAPu k dispozici Business Application Programming Interface (BAPI). Funkce tohoto rozhraní můžou být z javy volány přes RFC díky knihovně SAP JCo (Java Connector). Takto knihovna je nyní dostupná ve dvou navzájem nekompatibilních verzích, kterým odpovídají dva různé adaptéry v IdM.

Při použití starší, dvojkové verze knihovny, je potřeba přidat do Custom Resources třídu com.waveset.adapter.SAPResourceAdapter. U novější, trojkové verze, se používá třída com.waveset.adapter.SAPBasisResourceAdapter. Je ještě třeba dodat, že podpora SAPBasisResourceAdapter byla přidána do verze IdM 8.1 až patchem číslo dva. Tím také byl starší adaptér označen jako deprecated a od IdM 9 nebude nadále podporován. Konfigurace adaptéru je velmi podobná, nově je třeba specifikovat Destination Name. To označuje spojení a musí být v rámci JVM jedinečné.

Samotná instalace knihovny a konfigurace adaptéru je dobře dokumentována zde http://docs.sun.com/app/docs/doc/820-6551/giiyg?l=en&a=view

Na straně SAPu je potřeba přidat uživatelovi, přes kterého se IdM připojuje a spravuje uživatele, práva na funkční skupiny. Viz
http://help.sap.com/javadocs/NW04s/current/jc/com/sap/mw/jco/JCO.Repository.html

I po nastavení všech práv uvedených na odkazované stránce může stále docházet k problémům (nejen) z důvodu nedostatečných oprávnění. Proto se hodí možnost nastavit logování činnosti JCO knihovny. Děje se tak na stránce pro editaci resource parametru v polích SAP JCO Trace Level a SAP JCO Trace Directory. Nejvíce mi pomohly soubory after-*.xml, ve kterých je uvedeno, které BAPI funkce byly volány a jaký byl jejich výstup.

S rolemi, které jsou přiřazeny učtu, se pracuje přes atribut activityGroups. V resource schema by mělo být nastaveno mapování activityGroups na ACTIVITYGROUPS. Ve starší verzi adaptéru se dá ještě použít mapování na ACTIVITYGROUPOBJECTS nebo ACTIVITYGROUPS->AGR_NAME (pracuje se pouze s názvy rolí).

Pro ukázku, jak se pracuje s rolemi v případě mapování na ACTIVITYGROUPS, uvedu dva příklady.
Používají se objekty tříd GenericAttribute a GenericObject. Jejich dokumentaci naleznete v adresáři [stazene_idm]/REF/javadoc nebo pro idm7 na http://www-users.york.ac.uk/~jdi500/idm/javadoc/index.html
Jak vypadá struktura atributu activityGroups je vidět na následujícím xmlku.

<GenericAttribute>
  <Object>
    <Attribute name='attribute'>
      <Object>
        <Attribute name='activityGroups'>
          <List>
            <Object name='NAZEV_ROLE11/25/2009'>
              <Attribute name='AGR_NAME' value='NAZEV_ROLE'/>
              <Attribute name='AGR_TEXT' value='Popis role'/>
              <Attribute name='FROM_DAT' value='11/25/2009'/>
              <Attribute name='ORG_FLAG'/>
              <Attribute name='TO_DAT' value='12/31/9999'/>
            </Object>
          </List>
        </Attribute>
      </Object>
    </Attribute>
  </Object>
</GenericAttribute>

1) Získání seznamu názvů rolí, přiřazených konkrétnímu účtu.

<dolist name="role">
    
    <invoke name="get">
        <invoke name="get">
            <ref>accounts[%%RES_SAP%%].activityGroups</ref>
        </invoke>
        <s>activityGroups</s>
    </invoke>
    
    <get>
        <invoke name="getAttributes">
            <ref>role</ref>
        </invoke>
        <s>AGR_NAME</s>
    </get>
    
</dolist>

2) Vytvoření rolí ze seznamu jejich názvu a uložení do atributu.
Pokud se nenastaví hodnoty FROM_DATE a TO_DATE, tak se automaticky doplní na aktuální datum, respektive na 12/31/9999.
Jestliže je nastavit chceme, jednoduše je doplníme do mapy v konstruktoru GenericObjectu uvedené v tomto příkladu.

<defvar name='agListGo'>
    <new class="com.waveset.object.GenericObject" >
        <map>
            <s>activityGroups</s>
            <list />
        </map>
    </new>
</defvar>

<dolist name="name">
    <ref>activityGroupNames</ref>

    <block>
        <invoke name="add">
            <ref>agListGo</ref>
            <s>activityGroups</s>

            <new class='com.waveset.object.GenericObject'>
                <map>
                    <s>AGR_NAME</s>
                    <ref>name</ref>
                </map>
            </new>

        </invoke>
        
    </block>
</dolist>

<setvar name="accounts[%%RES_SAP%%].activityGroups">
    <new class="com.waveset.object.GenericAttribute">
        <ref>agListGo</ref>
    </new>
</setvar>

Dále se ještě může hodit získání seznamu všech dostupných rolí.
K tomu potřebujeme mít nastavena práva na čtení z tabulky AGR_DEFINE.
Role jsou pak získány následujícím kódem.

<invoke name='listResourceObjects' class='com.waveset.ui.FormUtil'>
    <ref>:display.session</ref>
    <s>activityGroups</s>
    <s>%%RES_SAP%%</s>
    <null/>
    <s>true</s> <!-- Pouzivat cache? -->
</invoke>