クラス LdapUserDetailsManager

  • 実装されたすべてのインターフェース:
    UserDetailsServiceUserDetailsManager

    public class LdapUserDetailsManager
    extends java.lang.Object
    implements UserDetailsManager
    UserDetailsManager の Ldap 実装。

    これは、ユーザーとグループ / ロールがそれぞれ "userDnBase" プロパティと "groupSearchBase" プロパティによって定義された別々のコンテキストに保存される標準設定に基づいて設計されています。

    この場合、LDAP は純粋に情報を取得するために使用されており、このクラスは他の UserDetailsService の代わりに認証に使用できます。LDAP 認証プロバイダーのセットアップとは異なり、認証はディレクトリに対して直接実行されません。

    導入:
    2.0
    • コンストラクターの詳細

      • LdapUserDetailsManager

        public LdapUserDetailsManager​(org.springframework.ldap.core.ContextSource contextSource)
    • メソッドの詳細

      • loadUserByUsername

        public UserDetails loadUserByUsername​(java.lang.String username)
        インターフェースからコピーされた説明: UserDetailsService
        ユーザー名に基づいてユーザーを見つけます。実際の実装では、実装インスタンスの構成方法に応じて、検索で大文字と小文字が区別される場合と、大文字と小文字が区別されない場合があります。この場合、戻ってくる UserDetails オブジェクトのユーザー名は、実際にリクエストされたものとは異なる場合があります。
        次で指定:
        インターフェース UserDetailsServiceloadUserByUsername 
        パラメーター:
        username - データが必要なユーザーを識別するユーザー名。
        戻り値:
        完全に入力されたユーザーレコード (非 null)
      • changePassword

        public void changePassword​(java.lang.String oldPassword,
                                   java.lang.String newPassword)
        現在のユーザーのパスワードを変更します。ユーザー名はセキュリティコンテキストから取得されます。対応する LDAP サーバーの機能に応じて、ユーザーのパスワードを変更するための 2 つの戦略がサポートされています。

        1 つの方法で設定すると、このメソッドは LDAP パスワード変更拡張操作を介してユーザーのパスワードを変更します。詳細については、setUsePasswordModifyExtensionOperation(boolean) を参照してください。

        ただし、デフォルトでは、古いパスワードが指定されている場合、ユーザーとして再バインドすることで更新が行われ、ユーザーの権限を使用してパスワードが変更されます。oldPassword が null の場合、更新は、コンテキストソースによって提供される標準の読み取り / 書き込みコンテキストを使用して試行されます。

        次で指定:
        インターフェース UserDetailsManagerchangePassword 
        パラメーター:
        oldPassword - 古いパスワード
        newPassword - パスワードの新しい値。
      • deleteUser

        public void deleteUser​(java.lang.String username)
        インターフェースからコピーされた説明: UserDetailsManager
        指定されたログイン名を持つユーザーをシステムから削除します。
        次で指定:
        インターフェース UserDetailsManagerdeleteUser 
      • userExists

        public boolean userExists​(java.lang.String username)
        インターフェースからコピーされた説明: UserDetailsManager
        指定されたログイン名を持つユーザーがシステムに存在するかどうかを確認します。
        次で指定:
        インターフェース UserDetailsManageruserExists 
      • buildGroupDn

        protected org.springframework.ldap.core.DistinguishedName buildGroupDn​(java.lang.String group)
        グループ名から DN を作成します。
        パラメーター:
        group - グループの名前
        戻り値:
        対応するグループの DN(groupSearchBase を含む)
      • copyToContext

        protected void copyToContext​(UserDetails user,
                                     org.springframework.ldap.core.DirContextAdapter ctx)
      • addAuthorities

        protected void addAuthorities​(org.springframework.ldap.core.DistinguishedName userDn,
                                      java.util.Collection<? extends GrantedAuthority> authorities)
      • removeAuthorities

        protected void removeAuthorities​(org.springframework.ldap.core.DistinguishedName userDn,
                                         java.util.Collection<? extends GrantedAuthority> authorities)
      • setPasswordAttributeName

        public void setPasswordAttributeName​(java.lang.String passwordAttributeName)
      • setGroupSearchBase

        public void setGroupSearchBase​(java.lang.String groupSearchBase)
      • setGroupRoleAttributeName

        public void setGroupRoleAttributeName​(java.lang.String groupRoleAttributeName)
      • setAttributesToRetrieve

        public void setAttributesToRetrieve​(java.lang.String[] attributesToRetrieve)
      • setGroupMemberAttributeName

        public void setGroupMemberAttributeName​(java.lang.String groupMemberAttributeName)
        グループのメンバーであるユーザーの DN を保持する複数値属性の名前を設定します。

        通常、これは uniquemember (デフォルト値)または member です。

        パラメーター:
        groupMemberAttributeName - グループメンバーの格納に使用される属性の名前。
      • setRoleMapper

        public void setRoleMapper​(org.springframework.ldap.core.AttributesMapper roleMapper)
      • setUsePasswordModifyExtensionOperation

        public void setUsePasswordModifyExtensionOperation​(boolean usePasswordModifyExtensionOperation)
        ユーザーのパスワードを変更する方法を設定します。true に設定すると、changePassword(java.lang.String, java.lang.String)パスワード変更拡張操作を介してユーザーのパスワードを変更します。false に設定すると、changePassword(java.lang.String, java.lang.String) は対応するエントリの属性を直接変更することにより、ユーザーのパスワードを変更します。この設定を使用する前に、対応する LDAP サーバーがこの拡張操作をサポートしていることを確認してください。デフォルトでは、usePasswordModifyExtensionOperation は false です。
        パラメーター:
        usePasswordModifyExtensionOperation -
        導入:
        4.2.9