Spring Security:Active Directoryユーザーをアプリケーションユーザーにマップする方法は?

davioooh

ActiveDirectory認証を既存のSpringWebアプリに統合しています。

現在、ユーザーの詳細はDBテーブルに保存されており、UserDetailsServiceユーザーを認証するカスタムを実装しました

いくつかのチュートリアルに従って、アプリケーションにActiveDirectoryLdapAuthenticationProvider介してActive Directoryサポートを実装しました。これは基本的に機能しますが、より具体的なものが必要です。

ADグループをアプリケーションの役割にマッピングする代わりに、ADユーザーをWebアプリの既存のユーザーにマッピングする必要がありますつまり、Usersテーブル内のユーザーに対してのみAD認証を有効にしたいのですユーザーは、アプリケーションDBに既に登録されている場合にのみ、AD資格情報を介してアクセスできます

各ユーザーの認証情報はDBに保存されます。このようにして、各ユーザーはDBユーザー+パスワードまたはADの両方を介して認証できます。

Spring Securityでこれを達成することは可能ですか?そしてどうやって?

私はSpringv3.2.9とSpringSecurity v3.2.3を使用しています。

davioooh

回避策として、カスタムAuthenticationProviderカスタムを実装しますUserDetailsContextMapper

BecouseActiveDirectoryLdapAuthenticationProvider、次のようにfinalADCustomAuthenticationProviderviaコンポジションを実装しクラスです

public class ADCustomAuthenticationProvider implements AuthenticationProvider {

    @Autowired
    private ActiveDirectoryLdapAuthenticationProvider adAuthProvider;
    @Autowired
    private UserDao uDao;

    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public Authentication authenticate(Authentication authentication)
            throws AuthenticationException {
        String principal = authentication.getPrincipal().toString();
        String username = principal.split("@")[0];
        User utente = uDao.findByUsername(username);
        if (utente == null) {
            throw new ADUnregisteredUserAuthenticationException("user ["
                    + principal + "] is not registered");
        }
        return adAuthProvider.authenticate(authentication);
    }

    @Override
    public boolean supports(Class<?> authentication) {
        return adAuthProvider.supports(authentication);
    }

}

マッパーでは、メソッドLdapUserDetailsMapperのみの実装を拡張しましたmapUserFromContext

public class ADCustomUserDetailsContextMapper extends LdapUserDetailsMapper {

    @Autowired
    private UserDetailsService userDetailsService; // ... the service used for DB authentication

    @Override
    public UserDetails mapUserFromContext(DirContextOperations ctx,
            String username, Collection<? extends GrantedAuthority> authorities) {
        return userDetailsService.loadUserByUsername(username);
    }
}

LdapUserDetailsを拡張しないmapUserToContextカスタムUserDetails実装を使用しているため、メソッドを実装する必要があります。そのため、逆変換プロセスで例外がスローされる可能性があります...)

この方法で、同じクエリを(Usersテーブルに対して)2回繰り返します...単一のクエリを作成し、AuthenticationProvider間で結果を共有し、AuthenticationProviderとUserDetailsContextMapper.e間で結果を共有する方法を見つけたいと思いますUserDetailsContextMapper

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring Security Active Directory

分類Dev

Spring SecurityアプリケーションでWebMvcConfigurerAdapterによって管理されるビューを含むすべてのテンプレートで現在ログインしているユーザーの情報を表示する方法

分類Dev

Spring Securityを備えたSpring Bootアプリケーション:特定のユーザーのみがアプリケーションに登録できるようにする

分類Dev

ユーザー情報をセッションに保存する、Spring Security

分類Dev

ユーザーをAzure B2C Active Directoryに一括アップロードするJavaコンソールアプリケーション

分類Dev

Grails Spring Security-アプリケーションが再起動するたびにユーザーテーブルとロールテーブルがワイプされる

分類Dev

ユーザーロール管理にSpring Securityを使用する方法

分類Dev

Spring Securityは、ユーザーがログアウトするとデータベースからセッションを削除します

分類Dev

Spring Securityがユーザーを認証するときにセッションでカスタムユーザーオブジェクトを管理する方法は?

分類Dev

ユーザーのセッションにログインすると、Tomcatのgrails spring securityで混乱する

分類Dev

React-SpringBootアプリケーションでSpring Securityを使用する方法

分類Dev

Spring-Security:Spring-Security 4.1へのアップグレード後、ユーザー名はログイン用に空で送信されます

分類Dev

Spring Security Active Directory LDAP認証エラー

分類Dev

Spring-Securityでユーザーがログアウトするときにセッションからユーザーログイン資格情報を削除する

分類Dev

Spring SecurityでCustomUserからユーザーIDを取得する方法

分類Dev

Spring SecurityとMarkLogicのJavaクライアントAPIを介してユーザーを認証する方法は?

分類Dev

セッションを無効にせずにSpring-Session(Redis)およびSpring-securityでユーザーをログアウトしますか?

分類Dev

Spring Security @ Securedアノテーションとユーザー権限

分類Dev

Spring Security @ Securedアノテーションとユーザー権限

分類Dev

Spring Boot マイクロサービス アプリケーション間でユーザー ID を通信する方法

分類Dev

Spring Security:Freemarkerテンプレートでユーザーロールを確認する

分類Dev

Spring Security / Spring Boot-ユーザーのロールを設定する方法

分類Dev

Spring Security: 追加のユーザー情報を JSP に渡す方法は?

分類Dev

Spring Bootアプリケーションに埋め込まれたTomcatにユーザーを追加するにはどうすればよいですか?

分類Dev

Spring Bootアプリケーションに埋め込まれたTomcatにユーザーを追加するにはどうすればよいですか?

分類Dev

Spring Security + Spring4-同じユーザーのマルチログインを無効にする

分類Dev

Spring Security と Web MVC: ユーザーに属するデータを保存する方法は?

分類Dev

Spring SecurityのJavaコードからユーザーにログインする方法は?

分類Dev

Spring SecurityのJavaコードからユーザーにログインする方法は?

Related 関連記事

  1. 1

    Spring Security Active Directory

  2. 2

    Spring SecurityアプリケーションでWebMvcConfigurerAdapterによって管理されるビューを含むすべてのテンプレートで現在ログインしているユーザーの情報を表示する方法

  3. 3

    Spring Securityを備えたSpring Bootアプリケーション:特定のユーザーのみがアプリケーションに登録できるようにする

  4. 4

    ユーザー情報をセッションに保存する、Spring Security

  5. 5

    ユーザーをAzure B2C Active Directoryに一括アップロードするJavaコンソールアプリケーション

  6. 6

    Grails Spring Security-アプリケーションが再起動するたびにユーザーテーブルとロールテーブルがワイプされる

  7. 7

    ユーザーロール管理にSpring Securityを使用する方法

  8. 8

    Spring Securityは、ユーザーがログアウトするとデータベースからセッションを削除します

  9. 9

    Spring Securityがユーザーを認証するときにセッションでカスタムユーザーオブジェクトを管理する方法は?

  10. 10

    ユーザーのセッションにログインすると、Tomcatのgrails spring securityで混乱する

  11. 11

    React-SpringBootアプリケーションでSpring Securityを使用する方法

  12. 12

    Spring-Security:Spring-Security 4.1へのアップグレード後、ユーザー名はログイン用に空で送信されます

  13. 13

    Spring Security Active Directory LDAP認証エラー

  14. 14

    Spring-Securityでユーザーがログアウトするときにセッションからユーザーログイン資格情報を削除する

  15. 15

    Spring SecurityでCustomUserからユーザーIDを取得する方法

  16. 16

    Spring SecurityとMarkLogicのJavaクライアントAPIを介してユーザーを認証する方法は?

  17. 17

    セッションを無効にせずにSpring-Session(Redis)およびSpring-securityでユーザーをログアウトしますか?

  18. 18

    Spring Security @ Securedアノテーションとユーザー権限

  19. 19

    Spring Security @ Securedアノテーションとユーザー権限

  20. 20

    Spring Boot マイクロサービス アプリケーション間でユーザー ID を通信する方法

  21. 21

    Spring Security:Freemarkerテンプレートでユーザーロールを確認する

  22. 22

    Spring Security / Spring Boot-ユーザーのロールを設定する方法

  23. 23

    Spring Security: 追加のユーザー情報を JSP に渡す方法は?

  24. 24

    Spring Bootアプリケーションに埋め込まれたTomcatにユーザーを追加するにはどうすればよいですか?

  25. 25

    Spring Bootアプリケーションに埋め込まれたTomcatにユーザーを追加するにはどうすればよいですか?

  26. 26

    Spring Security + Spring4-同じユーザーのマルチログインを無効にする

  27. 27

    Spring Security と Web MVC: ユーザーに属するデータを保存する方法は?

  28. 28

    Spring SecurityのJavaコードからユーザーにログインする方法は?

  29. 29

    Spring SecurityのJavaコードからユーザーにログインする方法は?

ホットタグ

アーカイブ