@Override protected Object formBackingObject(HttpServletRequest hreq) throws Exception { String artifactId = hreq.getParameter(SsoHttpArtifactBinding.SSO_ARTIFACT_ID); CollectUsernamePasswordClaims collectClaims; // No request parameter , try to get the form from the session if (artifactId == null) { collectClaims = (CollectUsernamePasswordClaims) hreq.getSession().getAttribute("CollectUsernamePasswordClaims"); // No collect claims in session, build an empty value and return. if (collectClaims == null) collectClaims = new CollectUsernamePasswordClaims(); return collectClaims; } collectClaims = new CollectUsernamePasswordClaims(); if (logger.isDebugEnabled()) logger.debug("Creating form backing object for artifact " + artifactId); // Lookup for ClaimsRequest! CredentialClaimsRequest credentialClaimsRequest = (CredentialClaimsRequest) artifactQueueManager.pullMessage(new ArtifactImpl(artifactId)); if (credentialClaimsRequest != null) { if (logger.isDebugEnabled()) logger.debug( "Received claims request " + credentialClaimsRequest.getId() + " from " + credentialClaimsRequest.getIssuerChannel() + " at " + credentialClaimsRequest.getIssuerEndpoint()); if (credentialClaimsRequest.getLastErrorId() != null) { if (logger.isDebugEnabled()) logger.debug( "Received last error ID : " + credentialClaimsRequest.getLastErrorId() + " (" + credentialClaimsRequest.getLastErrorMsg() + ")"); hreq.setAttribute("statusMessageKey", "claims.text.invalidCredentials"); } List<DashboardMessage> ssoPolicyMsgs = new ArrayList<DashboardMessage>(); // Publish SSO Policies information to be displayed ... for (SSOPolicyEnforcementStatement ssoPolicyEnforcement : credentialClaimsRequest.getSsoPolicyEnforcements()) { List<Object> values = null; if (ssoPolicyEnforcement.getValues().size() > 0) { values = new ArrayList<Object>(); values.addAll(ssoPolicyEnforcement.getValues()); } ssoPolicyMsgs.add( new DashboardMessage("claims.text." + ssoPolicyEnforcement.getName(), values)); } if (ssoPolicyMsgs.size() > 0) hreq.setAttribute("ssoPolicyMessages", ssoPolicyMsgs); collectClaims.setCredentialClaimsRequest(credentialClaimsRequest); } else { // TODO : redirect User to configured fallback URL if (logger.isDebugEnabled()) logger.debug("No claims request received, use the one stored in session, if any!"); CollectUsernamePasswordClaims oldClaims = (CollectUsernamePasswordClaims) hreq.getSession().getAttribute("CollectUsernamePasswordClaims"); if (oldClaims != null) { if (logger.isDebugEnabled()) logger.debug( "No claims request received, using old claims request : " + oldClaims.getCredentialClaimsRequest()); collectClaims.setCredentialClaimsRequest(oldClaims.getCredentialClaimsRequest()); } } hreq.getSession().setAttribute("CollectUsernamePasswordClaims", collectClaims); return collectClaims; }