Skip to content

Commit

Permalink
[JENKINS-9978] Improve the error diagnosis
Browse files Browse the repository at this point in the history
When YADIS discovery fails, openid4java does not report the URL it is hitting, making error diagnosis difficult.
  • Loading branch information
kohsuke committed Nov 27, 2013
1 parent b0a338b commit 6248511
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/main/java/hudson/plugins/openid/OpenIdLoginService.java
Expand Up @@ -28,6 +28,7 @@
import hudson.model.User;
import hudson.security.FederatedLoginService;
import hudson.security.FederatedLoginServiceUserProperty;
import hudson.security.SecurityRealm;
import org.kohsuke.stapler.HttpRedirect;
import org.kohsuke.stapler.HttpResponse;
import org.kohsuke.stapler.HttpResponses;
Expand All @@ -38,10 +39,18 @@
import org.openid4java.consumer.ConsumerManager;
import org.openid4java.consumer.InMemoryConsumerAssociationStore;
import org.openid4java.consumer.InMemoryNonceVerifier;
import org.openid4java.discovery.DiscoveryException;
import org.openid4java.discovery.yadis.YadisResolver;
import org.openid4java.discovery.yadis.YadisResult;
import org.openid4java.util.HttpCache;

import java.io.IOException;
import java.util.List;
import java.util.Set;

/**
* Augments other {@link SecurityRealm} by allowing login via OpenID.
*
* @author Kohsuke Kawaguchi
*/
@Extension
Expand All @@ -52,6 +61,19 @@ public OpenIdLoginService() throws ConsumerException {
manager = new ConsumerManager();
manager.setAssociations(new InMemoryConsumerAssociationStore());
manager.setNonceVerifier(new InMemoryNonceVerifier(5000));
manager.getDiscovery().setYadisResolver(new YadisResolver() {
/**
* Improve the error diagnosis by reporting which URL had failed. openid4java as of 0.9.4 does not do that.
*/
@Override
public YadisResult discover(String url, int maxRedirects, HttpCache cache, Set serviceTypes) throws DiscoveryException {
try {
return super.discover(url,maxRedirects,cache,serviceTypes);
} catch (DiscoveryException e) {
throw new DiscoveryException("Failed to discover XRDS document from "+url, e.getErrorCode(), e);
}
}
});
}

@Override
Expand Down

0 comments on commit 6248511

Please sign in to comment.