David Cole created SHIRO-525:
--------------------------------
Summary: When no user name is provided, JndiRealm causes an
IllegalStateException to be thrown
Key: SHIRO-525
URL: https://issues.apache.org/jira/browse/SHIRO-525
Project: Shiro
Issue Type: Bug
Components: Realms
Affects Versions: 1.2.2
Reporter: David Cole
Priority: Minor
We are using NTLM authentication with Waffle using a filter. If waffle can't
succeed at the integrated authentication, a form is provided. When the
integrated auth fails, it is typically because the user is not part of the
domain. As a result, there is no username discovered/provided. When this
occurs, Shiro is throwing an IllegalStateException as shown in the stacktrace
below. By throwing an IllegalStateException, the normal flow of error handling
is bypassed and the unchecked exception propagates out of the servlet,
improperly generating a server error instead of a standard
AuthenticationException. If a principal is not provided, a warning/error can be
logged, but the framework should generate the standard AuthenticationException
forcing the client to be challenged to reauthenticate.
{noformat}
16 Jan 2015 14:48:15,872 [] - Realm
[org.apache.shiro.realm.ldap.JndiLdapRealm@3630843] threw an exception during a
multi-realm authentication attempt:
java.lang.IllegalArgumentException: principal argument cannot be null.
at
org.apache.shiro.subject.SimplePrincipalCollection.add(SimplePrincipalCollection.java:104)
at
org.apache.shiro.subject.SimplePrincipalCollection.(SimplePrincipalCollection.java:59)
at
org.apache.shiro.authc.SimpleAuthenticationInfo.(SimpleAuthenticationInfo.java:74)
at
org.apache.shiro.realm.ldap.JndiLdapRealm.createAuthenticationInfo(JndiLdapRealm.java:412)
at
org.apache.shiro.realm.ldap.JndiLdapRealm.queryForAuthenticationInfo(JndiLdapRealm.java:377)
at
org.apache.shiro.realm.ldap.JndiLdapRealm.doGetAuthenticationInfo(JndiLdapRealm.java:295)
at
org.apache.shiro.realm.AuthenticatingRealm.getAuthenticationInfo(AuthenticatingRealm.java:568)
at
org.apache.shiro.authc.pam.ModularRealmAuthenticator.doMultiRealmAuthentication(ModularRealmAuthenticator.java:219)
at
org.apache.shiro.authc.pam.ModularRealmAuthenticator.doAuthenticate(ModularRealmAuthenticator.java:269)
at
org.apache.shiro.authc.AbstractAuthenticator.authenticate(AbstractAuthenticator.java:198)
at
org.apache.shiro.mgt.AuthenticatingSecurityManager.authenticate(AuthenticatingSecurityManager.java:106)
at
org.apache.shiro.mgt.DefaultSecurityManager.login(DefaultSecurityManager.java:270)
at
org.apache.shiro.subject.support.DelegatingSubject.login(DelegatingSubject.java:256)
at
org.apache.shiro.web.filter.authc.AuthenticatingFilter.executeLogin(AuthenticatingFilter.java:53)
at
waffle.shiro.negotiate.NegotiateAuthenticationFilter.onAccessDenied(NegotiateAuthenticationFilter.java:168)
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)