setNextState(request, FORWARD_JSP);
}
public void login(ActionFormEvent event) throws PortletException {
ActionRequest request = event.getActionRequest();
ActionResponse response = event.getActionResponse();
OpenIdUser user = null;
try {
HttpServletRequest httpRequest = (HttpServletRequest)request;
HttpServletResponse httpResponse = (HttpServletResponse)response;
user = _relyingParty.discover(httpRequest);
if (user == null) {
log.debug("discover return null");
response.setRenderParameter(ERROR_MESSAGE, "Error was occured.");
setNextState(request, LOGIN_JSP);
return ;
}
if (user.isAuthenticated()) {
log.debug("user already authenticated");
return ;
}
log.debug("OpenIDServer: " + user.getOpenIdServer());
// Associate and authenticate user
String url = buildPortalUrl(request);
String trustRoot = url + "/";
String realm = trustRoot;
log.debug("trust root: " + trustRoot);
String returnTo = url + FORWARD_URL_PATH;
log.debug("Return To: " + returnTo);
if (_relyingParty.associateAndAuthenticate(user, httpRequest,
httpResponse,
trustRoot, realm,
returnTo)) {
log.debug("Successful association");
return ;
} else {
log.error("Association failed");
}
} catch (UnknownHostException uhe) {
response.setRenderParameter(ERROR_MESSAGE, "Unknown OpenID Provider");
log.error(uhe.getMessage(), uhe);
} catch (IOException e) {
String providername = user == null ? "" : user.getOpenIdServer();
response.setRenderParameter(ERROR_MESSAGE,
"Coudn't access OpenID Provider " + providername);
log.error("IO error", e);
} catch (DistrustedProviderException e) {
response.setRenderParameter(ERROR_MESSAGE,
"Unsupported OpenID Provider: " + e.getOpenIdProvider());
} catch (Exception e) {
response.setRenderParameter(ERROR_MESSAGE, "Error was occured.");
log.error("Error was occured.", e);
}
log.debug("OpenID Initiation Failed.");
setNextState(request, LOGIN_JSP);
}