Spring BootアプリでのLDAP認証

MichaelB:

LDAPについてはほとんど何も知りませんが、Springのセキュリティについてはあまり知りませんが、LDAPインスタンスに対して認証するようにSpring Bootアプリを構成しようとしています。

adldap.company.comでldapサーバー名とdc = ad、dc = company、dc = comのベースdnが与えられました

単純なバインドを実行して機能するいくつかのpythonコードがあります。

LDAP_USERNAME = '[email protected]'
LDAP_PASSWORD = 'password'
base_dn = 'dc=ad,dc=company,dc=com' # not used for bind I guess, only search
try:
    ldap_client = ldap.initialize('ldap://adldap.company.com')
    ldap_client.set_option(ldap.OPT_REFERRALS,0)
    ldap_client.simple_bind_s(LDAP_USERNAME, LDAP_PASSWORD)
except ldap.INVALID_CREDENTIALS as e:
    ldap_client.unbind()
    return 'Wrong username and password: %s' % e
except ldap.SERVER_DOWN:
   return 'AD server not available'

このコードを実行すると、「[email protected]」としてパスワード「password」で正常にバインドされているようです。

また、authを処理する必要があると思うWebSecurityConfigクラスもあります。

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .antMatcher("/secure")
            .authorizeRequests()
            .anyRequest().fullyAuthenticated()
            .and()
            .httpBasic();
    }

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .ldapAuthentication()
            .userDnPatterns("uid={0}")
            .contextSource()
            .url("ldap://adldap.company.com");
            //.url("ldap://adldap.company.com/dc=ad,dc=company,dc=com");
    }
}

アプリで/ secureにアクセスすると、基本認証ポップアップが表示されますが、入力しようとすると401 Unauthorizedが表示されます。私は、ドメインなしで「[email protected]」を試してみましたが、それを{0}@adldap.company.comなどのuserDnPatternsに入れたり、他のものをたくさん入れたりしています。ベースDNが含まれるかどうかに関係なく、さまざまなURLを使用してみました。何も動作しないようです。何が欠けていますか?

また、これはユーザーを認証する正しい方法ですか?バインド認証とバインドと検索の両方について読みましたが、サーバーは匿名のバインドを許可していないため、バインドして検索を実行できる何らかの「アプリユーザー」が必要だと思いますよね?それは「良い」ですか?

セバスチャンヘルベルト:

Active Directoryには、通常のLDAP DNバインディングとは異なり、ユーザー認証用の独自の非標準構文があります。

Spring Securityは、Active Directory用の特別なAuthenticationProviderを提供します。

これを試して :

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .antMatcher("/secure")
            .authorizeRequests()
            .anyRequest().fullyAuthenticated()
            .and()
            .httpBasic();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(activeDirectoryLdapAuthenticationProvider());
    }

    @Bean
    public AuthenticationManager authenticationManager() {
        return new ProviderManager(Arrays.asList(activeDirectoryLdapAuthenticationProvider()));
    }
    @Bean
    public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
        ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider("adldap.company.com", "ldap://adldap.company.com");
        provider.setConvertSubErrorCodesToExceptions(true);
        provider.setUseAuthenticationRequestCredentials(true);
        return provider;
    }
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Spring BootとAngular認証-アプリを保護する方法は?

分類Dev

Spring RESTアプリケーションでの認証の最良の方法

分類Dev

Spring Bootアプリケーションの2つの認証メカニズム(BasicおよびJWT)

分類Dev

Spring BootアプリケーションがAWS Elastic Beanstalkで一度認証されない

分類Dev

RESTfulログインAPIを使用してSpring Bootアプリを認証する

分類Dev

Spring boot + oauth2:このリソースにアクセスするには完全な認証が必要です

分類Dev

Spring Boot / Thymeleaf-JavaScriptリクエストとX.509認証での認証の問題

分類Dev

Spring SecurityとLDAP認証

分類Dev

Spring Bootアプリで@ValidおよびBindingResultを使用する際のフォーム入力検証の問題

分類Dev

Apache リバース プロキシを介した Spring Boot 証明書の認証

分類Dev

MQ認証の問題へのSpringアプリケーション

分類Dev

SpringでのElasticsearchHTTP認証

分類Dev

同じリソースへのSpring Security OAuth2とLdap認証

分類Dev

Spring Bootで認証をワイヤリングする方法

分類Dev

複数の認証プロバイダーLDAP認証とJPAをサポートするSpring Security

分類Dev

Spring Boot2セキュリティの基本認証

分類Dev

Spring Boot OktaアプリのデプロイでのSunCertPathBuilderException

分類Dev

Spring BootでのTwitterのようなデータ認証?

分類Dev

Spring VaultアプリとSpring Bootアプリの統合

分類Dev

Spring BootのSpring Securityのデフォルト認証情報は何ですか?

分類Dev

Owncloud同期アプリのLDAP認証

分類Dev

Spring Bootアプリでの@Context UriInfoの置き換え

分類Dev

Spring Boot アプリでの ApplicationContext の開始エラー

分類Dev

Spring Session Redisの使用中、認証プリンシパルが空です

分類Dev

Spring Session Redisの使用中、認証プリンシパルが空です

分類Dev

Spring RESTアプリで認証が成功した後、プリンシパルがnullになるのはなぜですか?

分類Dev

LDAP認証-Springセキュリティ-LdapAuthenticationProvider

分類Dev

Spring Boot SoapWebサービスプロジェクトで基本認証を追加するときのNoSuchMethodError

分類Dev

既存のSpringアプリをSpring-Bootに移行し、Spring-Bootを手動で構成しますか?

Related 関連記事

  1. 1

    Spring BootとAngular認証-アプリを保護する方法は?

  2. 2

    Spring RESTアプリケーションでの認証の最良の方法

  3. 3

    Spring Bootアプリケーションの2つの認証メカニズム(BasicおよびJWT)

  4. 4

    Spring BootアプリケーションがAWS Elastic Beanstalkで一度認証されない

  5. 5

    RESTfulログインAPIを使用してSpring Bootアプリを認証する

  6. 6

    Spring boot + oauth2:このリソースにアクセスするには完全な認証が必要です

  7. 7

    Spring Boot / Thymeleaf-JavaScriptリクエストとX.509認証での認証の問題

  8. 8

    Spring SecurityとLDAP認証

  9. 9

    Spring Bootアプリで@ValidおよびBindingResultを使用する際のフォーム入力検証の問題

  10. 10

    Apache リバース プロキシを介した Spring Boot 証明書の認証

  11. 11

    MQ認証の問題へのSpringアプリケーション

  12. 12

    SpringでのElasticsearchHTTP認証

  13. 13

    同じリソースへのSpring Security OAuth2とLdap認証

  14. 14

    Spring Bootで認証をワイヤリングする方法

  15. 15

    複数の認証プロバイダーLDAP認証とJPAをサポートするSpring Security

  16. 16

    Spring Boot2セキュリティの基本認証

  17. 17

    Spring Boot OktaアプリのデプロイでのSunCertPathBuilderException

  18. 18

    Spring BootでのTwitterのようなデータ認証?

  19. 19

    Spring VaultアプリとSpring Bootアプリの統合

  20. 20

    Spring BootのSpring Securityのデフォルト認証情報は何ですか?

  21. 21

    Owncloud同期アプリのLDAP認証

  22. 22

    Spring Bootアプリでの@Context UriInfoの置き換え

  23. 23

    Spring Boot アプリでの ApplicationContext の開始エラー

  24. 24

    Spring Session Redisの使用中、認証プリンシパルが空です

  25. 25

    Spring Session Redisの使用中、認証プリンシパルが空です

  26. 26

    Spring RESTアプリで認証が成功した後、プリンシパルがnullになるのはなぜですか?

  27. 27

    LDAP認証-Springセキュリティ-LdapAuthenticationProvider

  28. 28

    Spring Boot SoapWebサービスプロジェクトで基本認証を追加するときのNoSuchMethodError

  29. 29

    既存のSpringアプリをSpring-Bootに移行し、Spring-Bootを手動で構成しますか?

ホットタグ

アーカイブ