ヘッダーをスキップ
Oracle Fusion Middleware Oracle Virtual Directory管理者ガイド
11gリリース1(11.1.1)
B55922-01
  目次
目次

戻る
戻る
 
次へ
次へ
 

5 Oracle Virtual Directoryのマッピングの概要

この章では、Oracle Virtual Directoryのマッピングについて説明します。この章の内容は次のとおりです。


注意:

この章のマッピング情報は、履歴情報として提供されています。これまでのデフォルトのマッピング・スクリプトもサポートされていますが、新しいカスタマイズではJavaプラグインAPIを使用する必要があります。これは、Java APIがすべてのOracle Virtual Directory機能へのアクセスを完全にサポートし、一般的に開発が容易なためです。

マッピングとは

Oracle Virtual Directoryには、Pythonスクリプト言語に基づく、双方向のマッピング・システムが含まれています。マッピングは、特別なPythonスクリプト(ファイル形式は.mpy)で、インバウンドおよびアウトバウンドのトランザクション・データ・フローを処理します。マッピングによりOracle Virtual Directoryサーバーにデータが渡されるため、Oracle Virtual Directoryの管理者は、データを操作およびマッピングできます。広く普及しているPythonスクリプト言語に基づくOracle Virtual Directoryのマッピング・システムでは、新しい固有の複雑なプログラミング言語を習得せずに、複雑なデータ操作を行うことができます。Oracle Virtual Directoryのマッピング・システムでは、アプリケーションからIDへのアクセスをさらに柔軟にサポートすることができます。Oracle Virtual Directoryは、マッピングを実行可能バイト・コードにコンパイルし、最高のパフォーマンスのためにインラインで実行します。

統合担当者は、1つのデータソースから別のデータソースに情報をマッピングするときに、カスタム変換を実行する使いやすいマッピング・スクリプトを開発できます。このようなスクリプトは、サーバーをリセットせずに、実行中のサーバーにインストールしてデプロイできます。マッピング・スクリプトは、リクエストがデータソースに到達するためにシステムに入る際にリクエストを調整し、クライアントに戻る途中でレスポンスを変換できます。たとえば、マッピングを使用すると、スキーマの正規化(Active DirectoryをInetOrgPersonのように見せるなど)、データ型の添付(ハッシュ・パスワードに対する{sha}など)、またはデータストアから取得した属性値に基づく仮想属性の作成を行うことができます。

マッピングの作成時には、事前定義済のマッピング・テンプレートを使用して構成を簡略化することも、新しいカスタム・マッピングを作成することもできます(マッピング・テンプレートの詳細は、「マッピング・テンプレートの概要」を参照してください)。通常、マッピングはコンパイル済JavaコードとしてOracle Virtual Directoryサーバーにデプロイされ、マッパーと呼ばれる特別なタイプのプラグイン内部で実行されます。プラグインと同様、マッピングは、グローバルに実行することも、アダプタ・レベルで実行することもできます。複数のマッピングとアダプタを組み合せて、総合的な変換サービスを実行する個々の機能のセットを作成できます。図5-1は、1つのマッピングを複数のアダプタで実行し、別のマッピングを特定のアダプタのみで実行する場合の一般的なシナリオを示しています。

図5-1 単一のアダプタおよび複数のアダプタにおけるマッピング・デプロイの例

マッピング・デプロイの例。

各マッピングにはインバウンドおよびアウトバウンドのフローがあり、リクエストを受信するときに一方向の変換を行い、リクエスト元のアプリケーションに結果が戻されるときには、その変換を逆方向にすることができます。サーバーがこの意図を予測することは通常不可能なため、このようにプログラム上で方向を逆にすることは重要です。

Oracle Virtual Directoryでは、マッピングをグローバルに実行するべきか、または1つのアダプタのコンテキスト内で実行するべきかを非常に柔軟に判断できます。マッピングが適用される仮想ツリー内の場所をさらに制限する必要が生じる場合もあります。たとえば、アダプタがMicrosoft Active Directoryドメインのかわりになるように設定されているとします。アダプタは、DC=VAN,DC=Oracle,DC=comを指しています。ドメイン・ツリー内のそのポイントの下には、CN=UsersコンテナおよびCN=Groupsコンテナがあります。マッピングにネームスペース・フィルタを追加すると、ツリーの一部にのみマッピングを適用することができます。

次に、Oracle Virtual Directoryのマッピングに関して考慮する必要のある注意事項を示します。

マッピングおよびカスタム・プラグインを使用する理由

マッピングを使用する顧客の多くは、Oracle Virtual Directoryに付属のデフォルトのマッピングを使用してアプリケーション要件を満たしています。マッパーAPIで対応しているのはJavaプラグイン機能のサブセットのみであること、PythonよりJavaに精通している開発者の方が多く、コードの開発に必要な時間を短縮できることから、カスタマイズが必要な場合は一般的にJavaプラグインAPIが使用されます。

概要: マッピングのデプロイ

次に、アダプタ・レベルおよびグローバル・サーバー・レベルで、マッピングをデプロイするプロセスの概要を示します。

  1. マッピング・テンプレートを使用してマッピングを構成し、スクリプトにコンパイルして、Oracle Virtual Directoryサーバーにデプロイすると、グローバル・サーバー・レベルまたはアダプタ・レベルでアクティブ化されます。


    関連項目:

    詳細は、「マッピング・テンプレートを使用したマッピングの作成」を参照してください。

  2. マッピングをグローバル・サーバー・レベルまたはアダプタ・レベルで構成するには、名前を付け、マッピング・スクリプト・ファイルを指定し、実行予定の仮想ディレクトリでのネームスペースを決定してアクティブ化します。


    関連項目:


マッピング・テンプレートの概要

この項では、Oracle Virtual Directoryマッピング・テンプレートについて説明します。この項の内容は次のとおりです。

Active_Directory_to_inetOrg

Microsoft Active Directoryのユーザーとグループ・オブジェクトを、それぞれInetOrgPerson inetOrgPersonおよびgroupOfUniquenamesオブジェクトにマッピングします。

Common_Name_to_Given_Name

デフォルトのsnおよびgivennameの2つの属性の値を結合することで、仮想の共通名属性を作成します。通常、Common_Name_to_Given_Nameマッピングは、名前と姓のみはあるがフルネームはないデータベース・アダプタに使用されます。


注意:

このマッピングでは、共通名属性のサブストリング・フィルタはサポートされていません。

ConditionalPublish

別の属性の条件値が一致する場合に、指定された属性を削除します。ConditionalPublishマッピングは、さらに高度なトレーニング環境のFERPA保護属性を非表示にする際に便利です。

DB_Groups

グループに関する表を有効なLDAPグループにマップするときにこのテンプレートを使用します。最初の列はcn(グループ名)になります。2番目の列はuniquememberになります。uniquememberの場合、RDN値のみが表内で使用されるように使用されるように、DNが削除されます。たとえば、(uniqueMember=cn=XXX,ou=testusers)が(uniqeMember=XXX)に変換されます。

Map_DB_Password

インバウンドのバイナリ構文パスワードを、データベースと互換性のあるIA5Stringパスワードにマッピングします。


注意:

Map_DB_Passwordマッピングとデータベース・アダプタを関連付け、changetypeをAdd、UserPasswordなどのバイナリ属性をOracle Virtual Directoryの既存の値にしてLDAP変更操作を実行すると、主キー制約がデータベース表に設定されていない場合、データベースに重複行が追加されます。

マッピング・デプロイの例

この項では、一般的なマッピング・デプロイの例を2つ示します。この項の内容は次のとおりです。

givennameおよびsurname属性からの共通名属性の作成

概要

この例では、givennameとsurname(sn)から共通名(cn)を作成する方法を説明します。このタイプのマッピング・デプロイは、データベース・アダプタを使用して、データベースに格納されているユーザー・データへのLDAPインタフェースを提供する際に便利です。LDAPディレクトリには通常cnが格納されますが、データベースでは名前と姓のみが格納される傾向があります。検索の実行時には、共通名へのフィルタ処理が非常に複雑になります。たとえば、フィルタ(cn=Marc Boorshtein)は、(&(givenName=Marc)(sn=Boorshtein))と読み取る必要があります。

マッピング要件

次に、このマッピング例の仮想要件のリストを示します。

  • アダプタからデータが取得されたら、givennameとsnを組み合せてcnを作成する必要があります。

  • インバウンド側では、cnをgivennameとsnに分割する必要があります。属性リクエスト・リストにcnが含まれている場合は、リストが変更され、givennameおよびsnが含められます。

  • インバウンド操作が検索操作の場合は、検索フィルタを確認してcnを適切に変換する必要があります。

マッピング
def parceCN(val):
  return split(val,' ',2)

def inbound():
  #map the "cn" filters
  if operation == 'get':
     if haveAttribute('cn'):
         addAttribute('givenName')
         addAttribute('sn')

     cnFilters = findFilters('cn')
     for filter in cnFilters:
        target,op,val = filter.contents
        givenNameVal, snVal = parceCN(val)
        givenNameFilter = createFilter('givenName',op,givenNameVal)
        snFilter = createFilter('sn',op,snVal)
        filter.contents = createAndFilter([givenNameFilter,snFilter])

def outbound():
  #outbound stuff
  addAttributeValue('cn',getAttributeValue('givenName') + ' ' +
                     getAttributeValue('sn'))
インバウンド処理

inbound()関数では、すべてのcnを変換し、givenname属性とsn属性に分割します。検索の場合には、cnの検索フィルタをgivennameとsnに対応する結合フィルタに変換し、新しい関数parceCN()を作成します。

マッピングの最初の行では、Pythonのstringモジュールからsplit関数がインポートされます。parseCN()というPython関数が定義され、cnが取得されて、スペースの検出に基づいて名前と姓に分割されます。


注意:

ミドル・ネームが使用されているなど、実際にはより複雑です。この例の目的は、手始めにこの簡単なケースで考えることです。高度なマッピングの状況に関しては、Oracleサポートに連絡してください。

次に、inbound()関数を定義します。inbound関数はすべてのLDAP操作に対応していますが、ここで必要としているのは検索操作です。したがって、インバウンドの後の最初の行は、値operationをテストするifブロックになります。この変数操作には、add、bind、delete、get、modify、renameのいずれかが含まれます。

操作がgetの場合、マッピングは、検索リクエストの属性リクエスト・リスト内にcnがあるかどうかを判別して続行します。cnを作成するには、givennameとsnを組み合せる以外に方法がないため、addAttribute()関数を使用して、検索リストにgivennameとsnを追加する必要があります。

cnのフィルタ・リクエストを処理するために、マッピングは、ターゲットがcn属性であるすべてのフィルタ要素を取得します。マッピングは、フィルタごとに要素を解析し、parseCNをコールして対応するgivenname値とsn値を計算し、新しいgivenNameフィルタおよびsnフィルタを作成します。最後に、マッピングのインバウンド関数は、cnを伴うフィルタ条件をgivenNameおよびsnを含む結合フィルタに置き換えます。

アウトバウンド処理

アウトバウンド関数は、アダプタからクライアントへ送られるすべてのトランザクションを処理します。この例では、その他2つの値からcnを作成する必要があり、addAttributeValue関数を使用して、givenname、スペース1個、およびsn値を組み合せて新しいcn値を作成します。クライアントに戻される現在のエントリから特定の属性を取得するgetAttributeValue関数を使用して、既存の値がどのように取得されるかに注意してください。

Microsoft Active Directoryスキーマのマッピング

概要

一般的に、アプリケーションでは、inetorgpersonおよびgroupofuniquenamesのスキーマ・オブジェクトを使用してLDAPディレクトリを使用することが求められます。ただし、多くの組織では、userオブジェクトとgroupオブジェクトのみをサポートするMicrosoft Active Directoryが使用されています。このサンプルのマッピング・デプロイでは、マッピングを使用してActive Directoryのスキーマを、inetorgpersonまたはgroupofuniquenamesを使用するinetorgスタイルのスキーマのようにする方法を説明します。

マッピング要件

次に、このマッピング例の変換およびマッピング要件のリストを示します。

  • 属性名の双方向マッピング。たとえば、uniquemember = memberuid = samaccountnameなどです。

  • オブジェクト・クラス名の変換。基本のオブジェクト・クラス名を変更するだけでなく、Microsoft Active Directoryでは補助オブジェクト・クラスが使用されないことも考慮する必要があります。たとえば、オブジェクト・クラス値のinterorgpersonorganizationalpersonまたはpersonは、まとめて単にuserにする必要があります。

  • 特別な属性値の追加。Microsoftでは、groupTypeuserAccountControlなどの追加のオブジェクト・タイプ・コードを使用することが要求されます。操作に応じて、特別なタグをリクエストに追加する必要があります。

  • RDN変換。通常、Microsoftでは、cnはユーザー・アカウントの相対識別名として使用されます。多くのアプリケーションでは、uidを使用することが求められます。

マッピング

次の小規模のスクリプトを使用すると、inetOrgアプリケーションでMicrosoft Active Directoryを使用できます。

def inbound():
      #first rename the attributes
      rename({'uniqueMember':'member','uid':'samaccountname','userpassword':
      'unicodepwd','ntgrouptype':'grouptype'})

      #map nessasary object class values
      if haveAttributeValue('objectclass','groupifuniquenames'):
             removeAttributeValue('objectclass','groupofuniquenames')
             addAttributeValue('objectclass','group')

      if haveAttributeValue('objectclass','organizationalPerson'):
             removeAttributeValue('objectclass','organizationalPerson')
             addAttributeValue('objectclass','user')

      if haveAttributeValue('objectclass','inetOrgPerson'):
             removeAttributeValue('objectclass','inetOrgPerson')
             addAttributeValue('objectclass','user')

      #when adding an entry, certain values need to be added
      if operation == 'add':
         if haveAttributeValue('objectClass','group'):
                addAttributeValue('groupType','-2147483646')
                if not haveAttribute('samaccountname'):
                         copy('cn','samaccountname')

         if haveAttributeValue('objectClass','user'):
                addAttributeValue('userAccountControl','66048')

     #collapse aux classes
      removeAttributeValue('objectClass','person')
      removeAttributeValue('objectClass','organizationalPerson')

      #set the rdn
      setRDN('samaccountname','cn')

def outbound():
    #first rename the attributes
    rename({'member':'uniqueMember','samaccountname':'uid','unicodepwd':
    'userpassword','grouptype':'ntgrouptype'})

    #map nessasary object class values
    if haveAttributeValue('objectclass','group'):
        removeAttributeValue('objectclass','group')
        addAttributeValue('objectclass','groupofuniquenames')

    if haveAttributeValue('objectclass','user'):
       removeAttributeValue('objectclass','user')
       addAttributeValue('objectclass','organizationalPerson')
インバウンド処理

inbound()関数の最初の行では、すべてのinetorg属性がActive Directory属性に名前変更されます。すべての操作に対してrename関数がコールされます。たとえば、操作が検索の場合、リクエストされたすべての属性およびフィルタ内のすべての属性が名前変更されます。操作が追加または変更の場合は、影響するすべての属性が名前変更されます。

inbound関数の2番目のセクションでは、inetOrgのオブジェクト・クラスがInetADのオブジェクト・クラスに置き換えられます。条件文を使用して、実行するアクションを指定できることに注目してください。

inbound関数の3番目のセクションでは、操作が追加(add)かどうかがチェックされ、追加であれば、Active Directoryで必要になる特定の属性情報が追加されます。

inbound関数の4番目のセクションでは、すべての補助オブジェクト・クラスが削除されます。これは、Active Directoryでは、追加操作の際に補助オブジェクト・クラスを直接指定できないためです。

inbound関数の最後のセクションでは、RDNがuidからcnに変更されます。コードにより、samaccountnamecnに変換されます。これは、uidがすでにsamaccountnameに変換されていたためです。また、RDNをuidからcnに変更するだけでなく、(変更や検索などで)cnが指定されていない場合は、cnの検出にも対応します。

アウトバウンド処理

Active Directoryからリクエストが戻されると、outbound()関数が実行されます。outbound()関数は、inbound関数を逆にします。つまり、最初にすべての適用可能な属性を名前変更し、オブジェクト・クラス名をマッピングして、すべての結果のRDNを変更します。

マッピング機能

Oracle Virtual Directoryのマッピングは、Python言語に基づいており、Pythonで使用できるすべての機能またはサブルーチンを使用できます。Oracle Virtual DirectoryでサポートされているPythonの機能だけでなく、次の項で説明するライブラリ関数も提供されます。

メソッド

次に、Python言語のメソッドと、Oracle Virtual Directoryのマッピングで使用可能なメソッドのリストを示します。


注意:

Map xxxxxを指定するメソッドは、次の書式で値のリストを指定できることを意味します。
{'uniqueMember':'member','uid':'samaccountname',[…] }

これは、本質的に、1つ以上のマップされた値の配列です。異なる名前のペア関係に特定のメソッドを複数回使用する場合は(「Microsoft Active Directoryスキーマのマッピング」の例のrenameなど)、この構文がサポートされているメソッドでこれを使用します。この構文は、省略表現として優れており、パフォーマンスの向上にも役立ちます。


appendAttribute(source,destination)

操作: add、modify、get、entry

appendAttribute関数は、source属性の値をdestination属性に追加します。ソース属性は同じ場所に留まります。この関数は、検索フィルタに影響します。

Example: appendAttribute('sn','givenName')
add/entry:
dn: cn=User
objectClass: person
cn: User
givenName: User
sn: name
becomes:
dn: cn=User
objectClass: person
cn: User
givenName: User
givenName: name
sn: name

modify:
dn: cn=User
changetype: modify
add: sn
sn: Last
-
add: givenName
givenName: First
becomes:
dn: cn=User
changetype: modify
add: sn
sn: Last
-
add: givenName
givenName: First
givenName: Last

get:
(&(givenName=first)(sn=last))
becomes:
(&(|(sn=last)(givenName=last))(givenName=first))
copyAttribute(source,destination)

操作: add、modify、get、entry

copyAttribute関数は、source属性の属性値をdestination属性にコピーします。destination属性がすでに存在する場合は、属性が上書きされます。

Example: copyAttribute('sn','givenName')
add/entry:
dn: cn=User
objectClass: person
cn: User
givenName: User
sn: name
becomes:
dn: cn=User
objectClass: person
cn: User
givenName: User
givenName: name
sn: name

modify:
dn: cn=User
changetype: modify
add: sn
sn: Last
-
add: givenName
givenName: First
becomes:
dn: cn=User
changetype: modify
add: sn
sn: Last
-
add: givenName
givenName: First
givenName: Last

get:
(&(givenName=first)(sn=last))
becomes:
(|(sn=last)(givenName=last))
renameAttribute(source,destination)

操作: add、modify、get、entry

source属性をdestination属性に名前変更します。destination属性がすでに存在する場合は、属性が上書きされます。source属性が存在せず、destination属性が存在する場合は、destination属性が削除されます。

Example: renameAttribute('sn','givenName')
add/entry:
dn: cn=User
objectClass: person
cn: User
givenName: User
sn: name
becomes:
dn: cn=User
objectClass: person
cn: User
givenName: name

modify:
dn: cn=User
changetype: modify
add: sn
sn: Last
-
add: givenName
givenName: First
becomes:
dn: cn=User
changetype: modify
add: givenName
givenName: Last

get:
(&(givenName=first)(sn=last))
becomes:
(givenName=last)
removeAttribute(attribute)

操作: add、modify、get、entry

指定された属性が削除され、その値がリストに戻されます。属性がエントリの一部である場合は、値が戻されます。値がchangelistの一部である場合は、EntryChangeオブジェクトが戻されます。

Example: removeAttribute('sn')
add/entry:
dn: cn=User
objectClass: person
cn: User
givenName: User
sn: name
becomes:
dn: cn=User
objectClass: person
cn: User
givenName: User

modify:
dn: cn=User
changetype: modify
add: sn
sn: Last
-
add: givenName
givenName: First
becomes:
dn: cn=User
changetype: modify
add: givenName
givenName: First
givenName: Last

get:
(&(givenName=first)(sn=last))
becomes:
(givenName=last)
revalueAttribute(attribute,currentValue,newValue)

操作: add、modify、entry、get

Example: revalueAttribute('sn','name','newname')
add/entry:
dn: cn=User
objectClass: person
cn: User
givenName: User
sn: name
becomes:
dn: cn=User
objectClass: person
cn: User
givenName: User
sn: newname

modify:
dn: cn=User
changetype: modify
add: sn
sn: name
-
add: givenName
givenName: First
becomes:
dn: cn=User
changetype: modify
add: sn
sn: newname
-
add: givenName
givenName: First
givenName: Last

get:
(&(givenName=first)(sn=name))
becomes:
(&(givenName=last)(sn=newname))
mapSyntax(value,newSyntax)

操作: add、modify、entry

構文値を新しい構文にマップします。最初の引数が構文オブジェクトである場合は、newSyntaxで指定された構文のインスタンスが関数によって戻されます。有効な構文: DirectoryString、IA5String、BinarySyntax

mapSyntax(attribute,newSyntax)

操作: add、modify、entry

属性値を新しい構文にマップします。最初の引数が属性の名前である場合は、その属性のすべてのインスタンスが新しい構文にマップされます。有効な構文: DirectoryString、IA5String、BinarySyntax

splitValue(newNames,currentName,parseFunction,index,remove)

属性の既存の値が分割され、newNamesパラメータのリストされた属性にその分割の結果が追加されます。splitValue関数が便利な場合の例は、cn値のみのアダプタが存在するが、そのcn値からgivennameおよびsn値を作成する必要がある場合です。属性が複数値の場合は、検出された最初の値がデフォルトで使用され、分割は空白に基づいて行われ、初期値はそのままになります。次に、このメソッドのパラメータのリストと説明を示します。

  • newNames: 分割された値から作成される属性の配列。

  • currentName: 値の作成元の既存の属性。

  • parseFunction: 空白とは異なる解析ルールが必要な場合に、データを解析するための関数を識別するオプションのパラメータ。

  • index: 複数値の属性の場合、このパラメータにより、分割する値が識別されます。

  • remove: true(1)の場合、結果に存在するautobootの元のデータが削除され、ソースはそのままになります。

splitValue(newNames,currentName,parseFunction,index)

属性の既存の値が分割され、newNamesパラメータのリストされた属性にその分割の結果が追加されます。splitValue関数が便利な場合の例は、cn値のみのアダプタが存在するが、そのcn値からgivennameおよびsn値を作成する必要がある場合です。属性が複数値の場合は、検出された最初の値がデフォルトで使用され、分割は空白に基づいて行われ、初期値はそのままになります。次に、このメソッドのパラメータのリストと説明を示します。

  • newNames: 分割された値から作成される属性の配列。

  • currentName: 値の作成元の既存の属性。

  • parseFunction: 空白とは異なる解析ルールが必要な場合に、データを解析するための関数を識別するオプションのパラメータ。

  • index: 複数値の属性の場合、このパラメータにより、分割する値が識別されます。

splitValue(newNames,currentName,parseFunction,remove)

属性の既存の値が分割され、newNamesパラメータのリストされた属性にその分割の結果が追加されます。splitValue関数が便利な場合の例は、cn値のみのアダプタが存在するが、そのcn値からgivennameおよびsn値を作成する必要がある場合です。属性が複数値の場合は、検出された最初の値がデフォルトで使用され、分割は空白に基づいて行われ、初期値はそのままになります。次に、このメソッドのパラメータのリストと説明を示します。

  • newNames: 分割された値から作成される属性の配列。

  • currentName: 値の作成元の既存の属性。

  • parseFunction: 空白とは異なる解析ルールが必要な場合に、データを解析するための関数を識別するオプションのパラメータ。

  • remove: true(1)の場合、結果に存在するautobootの元のデータが削除され、ソースはそのままになります。

splitValue(newNames,currentName,parseFunction)

属性の既存の値が分割され、newNamesパラメータのリストされた属性にその分割の結果が追加されます。splitValue関数が便利な場合の例は、cn値のみのアダプタが存在するが、そのcn値からgivennameおよびsn値を作成する必要がある場合です。属性が複数値の場合は、検出された最初の値がデフォルトで使用され、分割は空白に基づいて行われ、初期値はそのままになります。次に、このメソッドのパラメータのリストと説明を示します。

  • newNames: 分割された値から作成される属性の配列。

  • currentName: 値の作成元の既存の属性。

  • parseFunction: 空白とは異なる解析ルールが必要な場合に、データを解析するための関数を識別するオプションのパラメータ。

splitValue(newNames,currentName,index,remove)

属性の既存の値が分割され、newNamesパラメータのリストされた属性にその分割の結果が追加されます。splitValue関数が便利な場合の例は、cn値のみのアダプタが存在するが、そのcn値からgivennameおよびsn値を作成する必要がある場合です。属性が複数値の場合は、検出された最初の値がデフォルトで使用され、分割は空白に基づいて行われ、初期値はそのままになります。次に、このメソッドのパラメータのリストと説明を示します。

  • newNames: 分割された値から作成される属性の配列。

  • currentName: 値の作成元の既存の属性。

  • index: 複数値の属性の場合、このパラメータにより、分割する値が識別されます。

  • remove: true(1)の場合、結果に存在するautobootの元のデータが削除され、ソースはそのままになります。

splitValue(newNames,currentName,index)

属性の既存の値が分割され、newNamesパラメータのリストされた属性にその分割の結果が追加されます。splitValue関数が便利な場合の例は、cn値のみのアダプタが存在するが、そのcn値からgivennameおよびsn値を作成する必要がある場合です。属性が複数値の場合は、検出された最初の値がデフォルトで使用され、分割は空白に基づいて行われ、初期値はそのままになります。次に、このメソッドのパラメータのリストと説明を示します。

  • newNames: 分割された値から作成される属性の配列。

  • currentName: 値の作成元の既存の属性。

  • index: 複数値の属性の場合、このパラメータにより、分割する値が識別されます。

splitValue(newNames,currentName,remove)

属性の既存の値が分割され、newNamesパラメータのリストされた属性にその分割の結果が追加されます。splitValue関数が便利な場合の例は、cn値のみのアダプタが存在するが、そのcn値からgivennameおよびsn値を作成する必要がある場合です。属性が複数値の場合は、検出された最初の値がデフォルトで使用され、分割は空白に基づいて行われ、初期値はそのままになります。次に、このメソッドのパラメータのリストと説明を示します。

  • newNames: 分割された値から作成される属性の配列。

  • currentName: 値の作成元の既存の属性。

  • remove: true(1)の場合、結果に存在するautobootの元のデータが削除され、ソースはそのままになります。

splitValue(newNames,currentName)

操作: add、modify、entry

Example: splitValue(['givenName','sn','cn',1)
add/entry:
dn: uid=User
objectClass: person
cn: First Last
uid: User
becomes:
dn: uid=User
objectClass: person
givenName: First
sn: Last
uid: User

modify:
dn: uid=User
changeType: modify
replace: cn
cn: First1 Last1
becomes:
dn: uid=User
changeType: modify
replace: givenName
givenName: First1
-
replace: sn
sn: :Last1

get:
(cn=First Last)
becomes:
(&(givenName=First)(sn=last))
addAttributeValue(name,value)

操作: add、modify、entry

名前属性に値を追加するか、この属性が存在しない場合は属性を作成します。modify操作で属性が存在しない場合は、変更項目Addが作成されます。

Example: addAttributeValue('myattrib','myval')
Example: addAttributeValue('noattrib','hasvalue')
add/entry:
dn: uid=User
objectClass: person
cn: First Last
uid: User
myattrib: noval
becomes:
dn: uid=User
objectClass: person
givenName: First
sn: Last
uid: User
myattrib: noval
myattrib: myval
noattrib: hasValue

modify:
dn: uid=User
changeType: modify
delete: myattrib
myattrib: someval
becomes:
dn: uid=User
changeType: modify
delete: myattrib
myattrib: someval
myattrib: myval
-
changetype: add
add: noattrib
noattrib: hasValue
haveAttribute(attributeName)

操作: add、modify、entry、get

指定された属性が存在する場合は、1(true)または0(false)を戻します。

haveAttributeValue(attributeName,attributeValue,fetchFromServer)

操作: add、modify、entry、get

指定された属性が存在する場合は、1(true)または0(false)を戻します。fetchFromServerが1の場合は、サーバーからエントリがフェッチされます。

haveAttributeValue(attributeName,attributeValue)

操作: add、modify、entry、get

指定された属性および関連付けられている値が存在する場合は、1(true)または0(false)を戻します。

haveAttribute(attributeName,attributeValue,fetchFromServer)

操作: add、modify、entry、get

指定された属性および関連付けられている値が存在する場合は、1(true)または0(false)を戻します。fetchFromServerが1の場合は、比較のためにサーバーからエントリが取得されます。

removeAttributeValue(attributeName,attributeValue)

操作: add、modify、get、entry

属性値を削除して、値が削除された場合はtrueを戻します。

Example: removeAttributeValue('myattribute','myvalue')
add/entry:
dn: cn=user
objectClass: person
cn: user
myattribute: myvalue
myattribute: myvalue2
becomes:
dn: cn=user
objectClass: person
cn: user
myattribute: myvalue2

modify:
dn: cn=User
changetype: modify
replace: myattribute
myattribute: myvalue
-
add: sn
sn: last
becomes:
dn: cn=User
changetype: modify
add: sn
sn: last

get:
(&(sn=last)(myattribute=myvalue))
becomes:
(sn=last)
setRDN(oldRDNAttribute,newRDNAttribute)

操作: add、modify、delete、bind、rename、entry

現在の名前のRDN(getのベース)を古いRDN属性から新しいRDN属性に変更します。

Example: setRDN('cn','uid')
add/entry:
dn: cn=user
objectClass: inetOrgPerson
uid: userid
cn: user
becomes:
dn: uid=userid
cn: user
objectClass: inetOrgPerson

modify:
dn: cn=user
changetype: modify
add: sn
sn: last
becomes:
dn: uid=userid
changetype: modify
add: sn
sn: last

bind/get/delete:
dn: cn=user
becomes:
dn: uid=userid
addReturnAttribute(attributeName)

操作: get

検索時に戻り属性のリストに属性を追加します。

findFilters(attributeName)

操作: get

指定された属性を伴うすべてのフィルタのリストを戻します。

createfilter(target,operation,value)

操作: get

targetをテストされる属性、operationを使用できるコンパレータの1つ、およびvalueをフィルタ処理対象の値として、新しいフィルタ・オブジェクトを作成します。

createAndFilter(filters)

操作: get

フィルタのリストからandフィルタを作成します。

createOrFilter(filters)

操作: get

フィルタのリストからorフィルタを作成します。

getAttributeValue(attributeName)

操作: add、entry

指定された属性の最初の値を戻します。

getAttributeValues(entry,attributeName)

操作: すべて

提供されたエントリから指定された属性の値を取得します。

createEntryChange(type,attribute,value)

操作: modify

新しいEntryChangeオブジェクトを作成して戻します。

addEntryChange(entryChange)

操作: modify

エントリ変更のリストにenエントリの変更を追加します。

getByName(dn)

操作: すべて

指定されたエントリを戻します。

convertBase(attributeName,oldBase,newBase)

操作: add、modify、entry、get

指定された属性の値について、oldBasenewBaseに置き換えます。

removeAttributeValue(attributeName)

操作add、modify、get、entry

存在する場合は属性が削除され、その値が戻されます(変更操作中の場合はEntryChangeの値)。

Example: removeAttributeValue('myattribute')
add/entry:
dn: cn=user
objectClass: person
cn: user
myattribute: myvalue
myattribute: myvalue2
becomes:
dn: cn=user
objectClass: person
cn: user
modify:
dn: cn=User
changetype: modify
replace: myattribute
myattribute: myvalue
-
add: sn
sn: last
becomes:
dn: cn=User
changetype: modify
add: sn
sn: last
get:
(&(sn=last)(myattribute=myvalue))
becomes:
(sn=last)

データ・オブジェクト

データ・オブジェクトは、Oracle Virtual DirectoryによってPython環境での使用が可能になった変数です。これらの変数は、Oracle Virtual Directoryデータ構造のハンドルの取得、および様々なオブジェクトとステータス項目の解釈に使用します。

operation

現在の操作です。有効な値: add、modify、delete、rename、get、entry、bind

vsi

仮想サービス・インタフェース(VSI)のハンドルを取得します。

attributes

戻すことが要求されている属性です。操作: get

base

現在の検索ベースです。操作: get

target, op, val = filter.contents and filter.contents = newfilter

フィルタを戻し、タプルの書式(target, operation, value)で設定します。

boolean filter.isAnd

フィルタがANDフィルタの場合に、TRUEを戻します。

boolean filter.isOr

フィルタがORフィルタの場合に、TRUEを戻します。

boolean filter.isNot

フィルタがNOTフィルタの場合に、TRUEを戻します。

changeEntries

modify操作に関する一連の変更です。操作: modify

creds

ユーザーの現在の資格証明(DN)です。操作: すべて

entry

追加するエントリまたは検索から戻されるエントリです。操作: get、add

filter

現在の検索フィルタです。操作: get

name

追加、バインド、変更または削除されるエントリです。すべての操作で使用可能です。

request

値の取得: val = request([String name])

値の格納: request(['myname'])='myvalue'

指定された現在のリクエスト情報のオブジェクト属性を戻し、設定します。このオブジェクトは、特定のトランザクションの間存在する異なるマッピングまたはプラグイン間で、任意の情報を渡すためのメソッドとして使用されます。たとえば、インバウンド操作中に特定の情報を格納して、後でアウトバウンド・リクエストでの処理に使用できます。

results

エラーが発生した場合に、結果コードを戻して設定します。操作: add、delete、modify

scope

現在の検索範囲を0(ベース)、1(1レベル)または2(サブツリー)で示します。操作: get

typesOnly

サーバーが型のみを戻して値を戻さないかどうかを示します。操作: get