1

У меня проблема с аутентификацией Active Directory в простом веб-приложении Spring. Я использую ActiveDirectoryLdapAuthenticationProvider и, похоже, работает нормально для пустых полей входа и правильных учетных данных. Проблема заключается в недопустимых учетных данных (неверный логин/пароль или оба). Приложение выдает исключение (ошибка 500) в браузере:Весенняя безопасность Недействительные учетные данные Active Directory (ошибка 49)

Error processing request 
Context Path: /MYAPPNAME 
Servlet Path: /login_check 
Path Info: null 
Query String: null 
Stack Trace: 
org.springframework.ldap.UncategorizedLdapException: Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory com.sun.jndi.ldap.LdapCtxFactory from classloader ModuleClassLoader for Module "deployment.MYAPPNAME.war:main" from Service Module Loader [Root exception is javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 52e, vece]] (...) 

ошибка консоли корень является:

javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: 
LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 52e, vece] 

Если учетные данные неверны, не всходит отправить пользователю аутентификации failure- URL? У меня нет учетной записи «manager» для использования ldap BIND, я считаю, что ActiveDirectoryLdapAuthenticationProvider должен связываться с использованием учетных данных из формы входа. Весенняя документация не имеет ничего о привязке к AD.

Возможно, это может быть разрешено с использованием собственного поставщика аутентификации, но я надеялся, что есть готовое решение. Есть несколько подобных вопросов, но ни один из них не очень точен или с каким-либо полезным ответом.

Как подойти к этой ошибке?

Есть ли способ настроить его в XML? Возможно, сообщить провайдеру AD об ошибке привязки протектора как неудачной попытке входа в систему?

Является ли обычным поставщиком аутентификации единственным решением?


весна-security.xml

<bean id="roleVoter" class="org.springframework.security.access.vote.RoleVoter"> 
    <property name="rolePrefix" value="" /> 
</bean> 
<bean id="accessDecisionManager" class="org.springframework.security.access.vote.AffirmativeBased"> 
    <constructor-arg name="decisionVoters" ref="roleVoter" /> 
</bean> 
<s:http authentication-manager-ref="ldap-auth" access-decision-manager-ref="accessDecisionManager" use-expressions="false"> 
    <s:intercept-url pattern="/list**" access="ADGROUP-XYZ" /> 
    <s:form-login 
     login-page="/login"    
     login-processing-url="/login_check" 
     username-parameter="username" 
     password-parameter="password"  
     default-target-url="/list" 
     authentication-failure-url="/login?fail" /> 
    <s:logout 
     invalidate-session="true" 
     logout-success-url="/login?logout" 
     logout-url="/logout" 
     delete-cookies="JSESSIONID" /> 
    <s:csrf /> 
</s:http>  

<s:authentication-manager id="ldap-auth"> 
    <s:authentication-provider ref="adAuthenticationProvider" /> 
</s:authentication-manager> 

<bean id="adAuthenticationProvider" class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider"> 
    <constructor-arg value="company.local" /> 
    <constructor-arg value="ldap://server.company.local:389/" /> 
    <property name="useAuthenticationRequestCredentials" value="true"/> 
    <property name="convertSubErrorCodesToExceptions" value="true"/> 
</bean> 

EDIT: Один некрасиво исправление переопределить ActiveDirectoryLdapAuthenticationProvider и изменить throw LdapUtils.convertLdapException(e); к throw badCredentials(e);.

ответ

1

Существует проблема с JBoss EAP начального context.This был зафиксирован в последнем wildfly versions.check ниже ссылки

https://jira.spring.io/browse/SEC-2754

https://issues.jboss.org/browse/WFLY-4149

+0

вы можете попробовать образцы код, приведенный в url https://jira.spring.io/browse/SEC-2754, чтобы исправить эту проблему – Sampathkumar