package in.partake.service.impl; import in.partake.service.IOpenIDService; import java.util.List; import java.util.Map; import org.openid4java.OpenIDException; import org.openid4java.consumer.ConsumerException; import org.openid4java.consumer.ConsumerManager; import org.openid4java.consumer.VerificationResult; import org.openid4java.discovery.DiscoveryInformation; import org.openid4java.discovery.Identifier; import org.openid4java.message.AuthRequest; import org.openid4java.message.ParameterList; public class OpenIDService implements IOpenIDService { private ConsumerManager consumerManager; public OpenIDService() { try { consumerManager = new ConsumerManager(); } catch (ConsumerException e) { throw new RuntimeException(e); } } public DiscoveryInformation discover(String identifier) throws OpenIDException { String userSuppliedString = identifier; List<?> discoveries = consumerManager.discover(userSuppliedString); DiscoveryInformation discovered = consumerManager.associate(discoveries); return discovered; } public String getURLToAuthenticate(DiscoveryInformation discoveryInformation, String callbackURL) throws OpenIDException { AuthRequest authReq = consumerManager.authenticate(discoveryInformation, callbackURL); return authReq.getDestinationUrl(true); } public String getIdentifier(String receivingURL, Map<String, Object> params, DiscoveryInformation discoveryInformation) throws OpenIDException { VerificationResult verification = consumerManager.verify(receivingURL, new ParameterList(params), discoveryInformation); Identifier verified = verification.getVerifiedId(); if (verified != null) return verified.getIdentifier(); return null; } }