Spring Security Active Directory LDAP認証エラー

cs-87:

Spring Security Active Directory LDAP Authenticationを使用している場合、ユーザーが認証されるPartialResultExceptionを示すエラーが発生しますまた、エラーなしでユーザーを認証するテストランナーファイルを作成しましたが、Active Directoryに対して認証しているときに認証できません。あなたの貴重な助けに感謝します。

Runner2.javaファイルのテスト

package com.company.test;

import java.util.Hashtable;

import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.InitialDirContext;


public class Runner2 {

    private static String providerUrl = "ldap://ADHO.COMPANY.NET:389";

    private static String principle = "@company.ad";

    public static final String SEARCH_BY_SAM_ACCOUNT_NAME = "(sAMAccountName=%s)";

    public static boolean authenticateAD(String user , String password) throws Exception {

        InitialDirContext context=null;
        Hashtable<String, String> env = new Hashtable<String, String>();
        String securityPrinciple = user + principle;
        System.out.println("Security principal to search ->"+securityPrinciple);

        // Configure our directory context environment.
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, providerUrl);
        env.put(Context.SECURITY_PRINCIPAL, securityPrinciple);
        env.put(Context.SECURITY_CREDENTIALS, password);
        try {

        context = new InitialDirContext(env);       
        return true;

        }catch(AuthenticationException e) {

         throw new AuthenticationException();

        }catch(Exception e) {

            throw new Exception();
        }
        finally { 
            try {
                if (context != null) {
                    context.close();
                }
            } catch (NamingException e) {

            } 
        } 

    }

    public static void main(String[] args) throws Exception {

        String r1 = "USRXXXX;
        String r2 = "Pass#word102";
        authenticateAD(r1,r2);
    }

}

ldap.propertiesファイル

ad.domain=company.ad
ad.url=ldap://ADHO.COMPANY.NET:389/

SpringSecurityConfig.javaファイル

package com.company.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.ProviderManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider;

import com.onezero.config.AuthenticationEntryPoint;

import java.util.Arrays;

@Configuration
@EnableWebSecurity
@PropertySource("classpath:ldap.properties")
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private Environment env;

    @Bean
    public AuthenticationEntryPoint customAuthenticationEntry() throws Exception {
      return new AuthenticationEntryPoint();
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers(HttpMethod.OPTIONS, "/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {


        http.authorizeRequests()
           .antMatchers("/welcome","/atm/**","/atm2/**","/**","/survey/**","/usrauth/**").authenticated()
           .and()
           .httpBasic()
           .authenticationEntryPoint(customAuthenticationEntry())
           .and()
           .exceptionHandling()
           .and()
           .csrf().disable()
           .sessionManagement()
           .sessionCreationPolicy(SessionCreationPolicy.STATELESS);

    }


    @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(
    env.getProperty("ad.domain"), env.getProperty("ad.url"));

        provider.setConvertSubErrorCodesToExceptions(true);
        provider.setUseAuthenticationRequestCredentials(true);




        return provider;

    }


}
ガブリエル・ルチ:

PartialResultExceptionサーバーが紹介を返すと、A がスローされます。それがサーバーの言い方です。「あなたが話していることはわかりませんが、誰が話しているのかはわかります」この回答には、オプションの適切な説明があります1つは設定することです。

env.put(Context.REFERRAL, "follow");

それは、サーバーが私たちに行くように言ったところにどこへでもリクエストを送るようにそれに伝えます。しかし、私はそれが良い解決策だとは思いません。1つだけの場合は、2つのネットワーク要求を行うことになります。適切な場所を指すように構成を変更することをお勧めします。

何が問題なのかを理解する1つの方法resolvedNameは、PartialResultExceptionオブジェクトのプロパティを調べることです。これにより、どこに送信されているかがわかります。最初にそこを指すように構成を変更できます。

私はJava開発者ではないので、多くの推測がありますが、ADがどのように機能するかはわかっています。とにかく試してみてください。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Spring Security + Spring data + MongoDBによる認証

分類Dev

Spring Securityによる認証

分類Dev

Active Directoryに対するLDAP認証で受け入れられているSECURITY_PRINCIPAL形式は何ですか?

分類Dev

Spring SecurityとAzure:Active Directoryグループのワイルドカードはありますか?

分類Dev

Python + LDAPを使用してActive Directoryに対して認証する

分類Dev

Kerberos / Spring Security / IE / Active Directoryでの「欠陥のあるトークンが検出されました」エラー(KerberosではなくNTLM)

分類Dev

Spring Securityを使用して、Active Directoryサーバーに対してどのように認証しますか?

分類Dev

Spring SecurityとLDAP認証

分類Dev

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

分類Dev

Spring Security JDBC認証ログインユーザーエラー

分類Dev

Spring Boot-フラグに応じてローカルDBまたはActive Directoryを介した認証

分類Dev

Spring Security認証がCORSエラーを引き起こす理由

分類Dev

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

分類Dev

ASP.NET Core 2.0 LDAP Active Directory認証

分類Dev

Flask-Active Directory認証

分類Dev

Flask-Active Directory認証

分類Dev

Flask-Active Directory認証

分類Dev

Spring Security:構成エラー

分類Dev

Spring Security:構成エラー

分類Dev

Spring Security:構成エラー

分類Dev

Spring Security LDAP Configuration

分類Dev

PowerShell: How to add 1 user to multiple Active Directory Security Groups - Security tab of the security group with write permission

分類Dev

Azure Active Directoryを使用した認証:WIF10201エラー

分類Dev

Spring Securityを使用してLDAP経由でディレクトリ(Active Directory)に認証できません

分類Dev

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

分類Dev

Spring Security:認証userdaoがnull

分類Dev

Spring Security認証後、HTTPステータス404エラーが発生する

分類Dev

Spring Security Active Directory

分類Dev

Windows Active DirectoryでLDAPを使用したユーザー認証(Windows Server 2016)

Related 関連記事

  1. 1

    Spring Security + Spring data + MongoDBによる認証

  2. 2

    Spring Securityによる認証

  3. 3

    Active Directoryに対するLDAP認証で受け入れられているSECURITY_PRINCIPAL形式は何ですか?

  4. 4

    Spring SecurityとAzure:Active Directoryグループのワイルドカードはありますか?

  5. 5

    Python + LDAPを使用してActive Directoryに対して認証する

  6. 6

    Kerberos / Spring Security / IE / Active Directoryでの「欠陥のあるトークンが検出されました」エラー(KerberosではなくNTLM)

  7. 7

    Spring Securityを使用して、Active Directoryサーバーに対してどのように認証しますか?

  8. 8

    Spring SecurityとLDAP認証

  9. 9

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

  10. 10

    Spring Security JDBC認証ログインユーザーエラー

  11. 11

    Spring Boot-フラグに応じてローカルDBまたはActive Directoryを介した認証

  12. 12

    Spring Security認証がCORSエラーを引き起こす理由

  13. 13

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

  14. 14

    ASP.NET Core 2.0 LDAP Active Directory認証

  15. 15

    Flask-Active Directory認証

  16. 16

    Flask-Active Directory認証

  17. 17

    Flask-Active Directory認証

  18. 18

    Spring Security:構成エラー

  19. 19

    Spring Security:構成エラー

  20. 20

    Spring Security:構成エラー

  21. 21

    Spring Security LDAP Configuration

  22. 22

    PowerShell: How to add 1 user to multiple Active Directory Security Groups - Security tab of the security group with write permission

  23. 23

    Azure Active Directoryを使用した認証:WIF10201エラー

  24. 24

    Spring Securityを使用してLDAP経由でディレクトリ(Active Directory)に認証できません

  25. 25

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

  26. 26

    Spring Security:認証userdaoがnull

  27. 27

    Spring Security認証後、HTTPステータス404エラーが発生する

  28. 28

    Spring Security Active Directory

  29. 29

    Windows Active DirectoryでLDAPを使用したユーザー認証(Windows Server 2016)

ホットタグ

アーカイブ