[
https://issues.jboss.org/browse/ELY-1745?page=com.atlassian.jira.plugin.s...
]
Justin Cook commented on ELY-1745:
----------------------------------
[~dlofthouse] Can you give me the steps to reproduce the problem? I tried running the
Elytron web test with the mechanism configuration selector [1] stuff commented out and ran
into an NPE [2] but it doesn't happen in the AvailableRealmsCallback, it happens
before.
[1]
{noformat}
ElytronAuthenticator elytronAuthenticator = ElytronAuthenticator.builder()
.setSecurityDomain(securityDomain)
//.setMechanismConfigurationSelector(MechanismConfigurationSelector.constantSelector(
// MechanismConfiguration.builder()
//
.addMechanismRealm(MechanismRealmConfiguration.builder().setRealmName("Elytron
Realm").build())
// .build()))
.setFactory(httpServerMechanismFactory)
.build();
{noformat}
[2]
{noformat}
java.lang.NullPointerException
at
org.wildfly.security.auth.server.ServerAuthenticationContext$InactiveState.selectMechanismConfiguration(ServerAuthenticationContext.java:1427)
at
org.wildfly.security.auth.server.ServerAuthenticationContext$InactiveState.transition(ServerAuthenticationContext.java:1422)
at
org.wildfly.security.auth.server.ServerAuthenticationContext$InactiveState.getMechanismConfiguration(ServerAuthenticationContext.java:1401)
at
org.wildfly.security.auth.server.ServerAuthenticationContext$1.handleOne(ServerAuthenticationContext.java:1036)
at
org.wildfly.security.auth.server.ServerAuthenticationContext$1.handle(ServerAuthenticationContext.java:839)
at
org.wildfly.security.http.util.SecurityIdentityServerMechanismFactory$SecurityIdentityCallbackHandler.handle(SecurityIdentityServerMechanismFactory.java:120)
at
org.wildfly.security.http.impl.BasicAuthenticationMechanism.evaluateRequest(BasicAuthenticationMechanism.java:97)
at
org.wildfly.security.http.util.SecurityIdentityServerMechanismFactory$1.evaluateRequest(SecurityIdentityServerMechanismFactory.java:84)
at
org.wildfly.security.http.HttpAuthenticator$AuthenticationExchange.authenticate(HttpAuthenticator.java:232)
at
org.wildfly.security.http.HttpAuthenticator$AuthenticationExchange.access$800(HttpAuthenticator.java:211)
at org.wildfly.security.http.HttpAuthenticator.authenticate(HttpAuthenticator.java:95)
at
org.wildfly.elytron.web.jetty.server.ElytronAuthenticator.validateRequest(ElytronAuthenticator.java:95)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:483)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:531)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)
at java.base/java.lang.Thread.run(Thread.java:834)
{noformat}
The AvailableRealmsCallback should not result in a NPE if there is no
mechanism configuration.
----------------------------------------------------------------------------------------------
Key: ELY-1745
URL:
https://issues.jboss.org/browse/ELY-1745
Project: WildFly Elytron
Issue Type: Bug
Components: API / SPI
Reporter: Darran Lofthouse
Assignee: Justin Cook
Priority: Major
Fix For: 1.8.0.CR3
The NPE is due to the following code: -
{noformat}
} else if (callback instanceof AvailableRealmsCallback) {
Collection<String> names =
stateRef.get().getMechanismConfiguration().getMechanismRealmNames();
if (log.isTraceEnabled()) {
log.tracef("Handling AvailableRealmsCallback: realms =
[%s]", String.join(", ", names));
}
if (! names.isEmpty()) {
((AvailableRealmsCallback)
callback).setRealmNames(names.toArray(new String[names.size()]));
}
handleOne(callbacks, idx + 1);
{noformat}
If mechanism configuration is mandatory this should report an appropriate error, if not
it should fallback to specifying an empty list.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)