クラス LdapUtils

java.lang.ObjectSE
org.springframework.ldap.support.LdapUtils

public final class LdapUtils extends ObjectSE
LDAP を操作するための一般的なユーティリティメソッド。主にフレームワーク内での内部使用向けですが、カスタムコードにも役立ちます。
導入:
1.2
  • メソッドの詳細

    • closeContext

      public static void closeContext(DirContextSE context)
      指定された JNDI コンテキストを閉じ、スローされた例外を無視します。これは、JNDI コードの典型的な finally ブロックに役立ちます。
      パラメーター:
      context - 閉じる JNDI コンテキスト (null の場合があります)
    • convertLdapException

      public static NamingException convertLdapException(NamingExceptionSE ex)
      指定されたチェック済み NamingExceptionSE を Spring LDAP ランタイム NamingException に相当するものに変換します。
      パラメーター:
      ex - 変換する元のチェック済み NamingException
      戻り値:
      指定された例外をラップする Spring LDAP ランタイム NamingException
    • getActualTargetClass

      public static ClassSE getActualTargetClass(DirContextSE context)
      提供された DirContext インスタンスの実際のクラスを取得します。LdapContext または DirContext。
      パラメーター:
      context - チェックする DirContext インスタンス。
      戻り値:
      コンテキストが LdapContext の場合は LdapContext.class、それ以外の場合は DirContext.class。
    • collectAttributeValues

      public static void collectAttributeValues(AttributesSE attributes, StringSE name, CollectionSE<ObjectSE> collection)
      提供された属性から、指定された属性のすべての値を収集します。
      パラメーター:
      attributes - 属性 ; null ではありません。
      name - 値を取得する属性の名前。
      collection - 値を収集するコレクション。
      例外:
      NoSuchAttributeException - 指定された名前の属性が存在しない場合。
      導入:
      1.3
    • collectAttributeValues

      public static <T> void collectAttributeValues(AttributesSE attributes, StringSE name, CollectionSE<T> collection, ClassSE<T> clazz)
      提供された属性から指定された属性のすべての値を、指定されたクラスとして収集します。
      パラメーター:
      attributes - 属性 ; null ではありません。
      name - 値を取得する属性の名前。
      collection - 値を収集するコレクション。
      clazz - 収集された属性値のクラス
      例外:
      NoSuchAttributeException - 指定された名前の属性が存在しない場合。
      IllegalArgumentExceptionSE - 属性値を指定されたクラスにキャストできない場合。
      導入:
      2.0
    • iterateAttributeValues

      public static void iterateAttributeValues(AttributeSE attribute, AttributeValueCallbackHandler callbackHandler)
      指定された属性のすべての値を反復処理し、指定された callbackHandler を呼び出します。
      パラメーター:
      attribute - 操作する属性。null ではありません。
      callbackHandler - callbackHandler; null ではありません。
      導入:
      1.3
    • convertCompositeNameToString

      public static StringSE convertCompositeNameToString(CompositeNameSE compositeName)
      恐ろしい「トリプルバックスラッシュ」問題などのエスケープの問題を回避する方法で、CompositeName を文字列に変換します。
      パラメーター:
      compositeName - コンバートする CompositeName
      戻り値:
      name の文字列表現を含む文字列
    • newLdapName

      public static LdapNameSE newLdapName(NameSE name)
      指定された Name インスタンスから新しい LdapName インスタンスを構築します。LdapName インスタンスはクローン作成され、CompositeName 調整は convertCompositeNameToString(javax.naming.CompositeName) を使用して管理されます。他のすべての Name 実装の場合、新しい LdapName インスタンスは LdapName.addAll(int, javax.naming.Name)SE を使用して構築されます。
      パラメーター:
      name - null ではなく LdapName に変換する Name インスタンス。
      戻り値:
      提供されたインスタンスと同じ識別名を表す新しい LdapName。
      例外:
      InvalidNameException - LdapName によってスローされた InvalidNameExceptions をラップします。
      導入:
      2.0
    • newLdapName

      public static LdapNameSE newLdapName(StringSE distinguishedName)
      提供された識別名文字列から新しい LdapName インスタンスを構築します。
      パラメーター:
      distinguishedName - LdapName インスタンスを構築するために解析する文字列。
      戻り値:
      新しい LdapName インスタンス。
      例外:
      InvalidNameException - LdapName によってスローされた InvalidNameExceptions をラップします。
      導入:
      2.0
    • removeFirst

      public static LdapNameSE removeFirst(NameSE dn, NameSE pathToRemove)
      名前インスタンスが path で始まる場合、指定されたパスを指定された Name の先頭から削除します。Name からベースパスサフィックスを削除できます。元の名前は影響を受けません。
      パラメーター:
      dn - ストリップする dn。
      pathToRemove - dn インスタンスの先頭から削除するパス。
      戻り値:
      指定されたパスが最初から削除された元の名前のコピーである LdapName インスタンス。
      導入:
      2.0
    • prepend

      public static LdapNameSE prepend(NameSE dn, NameSE pathToPrepend)
      名前インスタンスが path で始まる場合、指定された Name の先頭に指定されたパスを追加します。元の名前は影響を受けません。
      パラメーター:
      dn - ストリップする dn。
      pathToPrepend - dn の先頭に追加するパス。
      戻り値:
      先頭に指定されたパスが挿入された元の名前のコピーである LdapName インスタンス。
      導入:
      2.0
    • emptyLdapName

      public static LdapNameSE emptyLdapName()
      新しい空の LdapName インスタンスを構築します。
      戻り値:
      空のパス ("") を表す新しい LdapName インスタンス。
      導入:
      2.0
    • getRdn

      public static RdnSE getRdn(NameSE name, StringSE key)
      提供された Name でリクエストされたキーを持つ Rdn を見つけます。
      パラメーター:
      name - キーを検索する名前。
      key - 検索する属性キー。
      戻り値:
      リクエストされたキーの最初の出現に対応する rdn。
      例外:
      NoSuchElementExceptionSE - 対応するエントリが見つからない場合。
      導入:
      2.0
    • getValue

      public static ObjectSE getValue(NameSE name, StringSE key)
      指定された Name でリクエストされたキーを使用して Rdn の値を取得します。
      パラメーター:
      name - キーを検索する名前。
      key - 検索する属性キー。
      戻り値:
      リクエストされたキーの最初の出現に対応する rdn の値。
      例外:
      NoSuchElementExceptionSE - 対応するエントリが見つからない場合。
      導入:
      2.0
    • getValue

      public static ObjectSE getValue(NameSE name, int index)
      指定された Name でリクエストされたインデックスで Rdn の値を取得します。
      パラメーター:
      name - 作業する名前。
      index - 取得する rdn 値の 0 から始まるインデックス。[0,size()) の範囲内である必要があります。
      戻り値:
      リクエストされたインデックスでの rdn の値。
      例外:
      IndexOutOfBoundsExceptionSE - index が指定範囲外の場合。
      導入:
      2.0
    • getStringValue

      public static StringSE getStringValue(NameSE name, int index)
      指定された Name のリクエストされたインデックスにある Rdn の値を文字列として取得します。
      パラメーター:
      name - 作業する名前。
      index - 取得する rdn 値の 0 から始まるインデックス。[0,size()) の範囲内である必要があります。
      戻り値:
      リクエストされたインデックスの rdn の値を文字列として返します。
      例外:
      IndexOutOfBoundsExceptionSE - index が指定範囲外の場合。
      ClassCastExceptionSE - リクエストされたコンポーネントの値が文字列でない場合。
      導入:
      2.0
    • getStringValue

      public static StringSE getStringValue(NameSE name, StringSE key)
      指定された Name でリクエストされたキーを文字列として使用して、Rdn の値を取得します。
      パラメーター:
      name - キーを検索する名前。
      key - 検索する属性キー。
      戻り値:
      リクエストされたキーの最初の出現に対応する rdn の文字列値。
      例外:
      NoSuchElementExceptionSE - 対応するエントリが見つからない場合。
      ClassCastExceptionSE - リクエストされたコンポーネントの値が文字列でない場合。
      導入:
      2.0
    • convertBinarySidToString

      public static StringSE convertBinarySidToString(byte[] sid)
      here で説明されているアルゴリズムに従って、バイナリ SID をその文字列表現に変換します。アルゴリズムのインスピレーションをくれたエヤルルプに感謝します。
       If you have a SID like S-a-b-c-d-e-f-g-...
      
       Then the bytes are
       a      (revision)
       N      (number of dashes minus two)
       bbbbbb (six bytes of "b" treated as a 48-bit number in big-endian format)
       cccc   (four bytes of "c" treated as a 32-bit number in little-endian format)
       dddd   (four bytes of "d" treated as a 32-bit number in little-endian format)
       eeee   (four bytes of "e" treated as a 32-bit number in little-endian format)
       ffff   (four bytes of "f" treated as a 32-bit number in little-endian format)
       etc.
      
       So for example, if your SID is S-1-5-21-2127521184-1604012920-1887927527-72713, then your raw hex SID is
      
       010500000000000515000000A065CF7E784B9B5FE77C8770091C0100
      
       This breaks down as follows:
       01     S-1
       05     (seven dashes, seven minus two = 5)
       000000000005   (5 = 0x000000000005, big-endian)
       15000000       (21 = 0x00000015, little-endian)
       A065CF7E       (2127521184 = 0x7ECF65A0, little-endian)
       784B9B5F       (1604012920 = 0x5F9B4B78, little-endian)
       E77C8770       (1887927527 = 0X70877CE7, little-endian)
       091C0100       (72713 = 0x00011c09, little-endian)
      
       S-1-   version number (SID_REVISION)
       -5-    SECURITY_NT_AUTHORITY
       -21-   SECURITY_NT_NON_UNIQUE
       -...-...-...-  these identify the machine that issued the SID
       72713  unique user id on the machine
       
      パラメーター:
      sid - バイト配列形式のバイナリ SID
      戻り値:
      指定された sid の文字列バージョン
      導入:
      1.3.1
    • convertStringSidToBinary

      public static byte[] convertStringSidToBinary(StringSE string)
      ここで説明されているアルゴリズムに従って、文字列 SID をバイナリ表現に変換します。
      パラメーター:
      string - 読み取り可能な形式の SID
      戻り値:
      指定された sid のバイナリバージョン
      導入:
      1.3.1
      関連事項: