public boolean test(final Map<Challenge, String> responseTest) throws ChaiUnavailableException { if (service == null) { LOGGER.error( localIdentifier + "beginning web service 'processChaRes' response test, however service bean is not in session memory, aborting response test..."); return false; } LOGGER.trace(localIdentifier + "beginning web service 'processChaRes' response test "); final String[] responseArray = new String[challengeSet.getAdminDefinedChallenges().size()]; { int i = 0; for (final Challenge loopChallenge : challengeSet.getAdminDefinedChallenges()) { final String loopResponse = responseTest.get(loopChallenge); responseArray[i] = loopResponse; i++; } } final ProcessChaResRequest request = new ProcessChaResRequest(); request.setChaAnswers(responseArray); request.setUserDN(userDN); try { final ForgotPasswordWSBean response = service.processChaRes(request); if (response.isTimeout()) { LOGGER.error(localIdentifier + "web service reports timeout: " + response.getMessage()); return false; } if (response.isError()) { if ("Account restrictions prevent you from logging in. See your administrator for more details." .equals(response.getMessage())) { // throw PwmUnrecoverableException.createPwmException(PwmError.ERROR_INTRUDER_USER); } LOGGER.error(localIdentifier + "web service reports error: " + response.getMessage()); return false; } LOGGER.debug(localIdentifier + "web service has validated the users responses"); return true; } catch (RemoteException e) { LOGGER.error(localIdentifier + "error processing web service response: " + e.getMessage()); } return false; // To change body of implemented methods use File | Settings | File Templates. }
public boolean meetsChallengeSetRequirements(final ChallengeSet challengeSet) { if (challengeSet.getRequiredChallenges().size() > this.getChallengeSet().getRequiredChallenges().size()) { LOGGER.debug( localIdentifier + "failed meetsChallengeSetRequirements, not enough required challenge"); return false; } for (final Challenge loopChallenge : challengeSet.getRequiredChallenges()) { if (loopChallenge.isAdminDefined()) { if (!this.getChallengeSet() .getChallengeTexts() .contains(loopChallenge.getChallengeText())) { LOGGER.debug( localIdentifier + "failed meetsChallengeSetRequirements, missing required challenge text: '" + loopChallenge.getChallengeText() + "'"); return false; } } } if (challengeSet.getMinRandomRequired() > 0) { if (this.getChallengeSet().getChallenges().size() < challengeSet.getMinRandomRequired()) { LOGGER.debug( localIdentifier + "failed meetsChallengeSetRequirements, not enough questions to meet minrandom; minRandomRequired=" + challengeSet.getMinRandomRequired() + ", ChallengesInSet=" + this.getChallengeSet().getChallenges().size()); return false; } } return true; }
@Override public String toString() { return "NovellWSResponseSet holding {" + challengeSet.toString() + "}"; }