use of javax.security.auth.callback.ChoiceCallback in project OpenAM by OpenRock.
the class AuthXMLUtils method createChoiceCallback.
static ChoiceCallback createChoiceCallback(Node childNode, Callback callback) {
ChoiceCallback choiceCallback = null;
if (callback != null) {
if (callback instanceof ChoiceCallback) {
choiceCallback = (ChoiceCallback) callback;
}
}
if (choiceCallback == null) {
String prompt = getPrompt(childNode);
boolean multiSelect = false;
String multiSelectAttr = XMLUtils.getNodeAttributeValue(childNode, AuthXMLTags.MULTI_SELECT_ALLOWED);
if ((multiSelectAttr != null) && multiSelectAttr.equals("true")) {
multiSelect = true;
}
String[] choices = null;
int defaultChoice = 0;
Node choicesNode = XMLUtils.getChildNode(childNode, AuthXMLTags.CHOICE_VALUES);
NodeList choicesChildNodes = choicesNode.getChildNodes();
choices = new String[choicesChildNodes.getLength()];
for (int j = 0; j < choicesChildNodes.getLength(); j++) {
Node choiceValueNode = choicesChildNodes.item(j);
String isDefaultAttr = XMLUtils.getNodeAttributeValue(choiceValueNode, AuthXMLTags.IS_DEFAULT);
if ((isDefaultAttr != null) && isDefaultAttr.equals("yes")) {
defaultChoice = j;
}
String choiceValue = getValue(choiceValueNode);
choices[j] = choiceValue;
}
choiceCallback = new ChoiceCallback(prompt, choices, defaultChoice, multiSelect);
}
int[] selectedIndexes;
Node selectedNode = XMLUtils.getChildNode(childNode, AuthXMLTags.SELECTED_VALUES);
if (selectedNode != null) {
NodeList selectChildNodes = selectedNode.getChildNodes();
selectedIndexes = new int[selectChildNodes.getLength()];
for (int j = 0; j < selectChildNodes.getLength(); j++) {
Node selectValueNode = selectChildNodes.item(j);
selectedIndexes[j] = Integer.parseInt(XMLUtils.getValueOfValueNode(selectValueNode));
}
if (choiceCallback.allowMultipleSelections()) {
choiceCallback.setSelectedIndexes(selectedIndexes);
} else {
choiceCallback.setSelectedIndex(selectedIndexes[0]);
}
}
return choiceCallback;
}
use of javax.security.auth.callback.ChoiceCallback in project OpenAM by OpenRock.
the class AuthXMLUtils method getXMLForCallbacks.
/**
* TODO-JAVADOC
*/
public static String getXMLForCallbacks(Callback[] callbacks) {
if (callbacks == null) {
return ("");
}
// Construct the xml string
StringBuilder xmlString = new StringBuilder();
xmlString.append(AuthXMLTags.CALLBACKS_BEGIN).append(AuthXMLTags.SPACE).append(AuthXMLTags.LENGTH).append(AuthXMLTags.EQUAL).append(AuthXMLTags.QUOTE).append(callbacks.length).append(AuthXMLTags.QUOTE).append(AuthXMLTags.ELEMENT_END);
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof HiddenValueCallback) {
HiddenValueCallback hiddenValueCallback = (HiddenValueCallback) callbacks[i];
xmlString.append(getHiddenValueCallbackXML(hiddenValueCallback));
} else if (callbacks[i] instanceof NameCallback) {
NameCallback nameCallback = (NameCallback) callbacks[i];
xmlString.append(getNameCallbackXML(nameCallback));
} else if (callbacks[i] instanceof PasswordCallback) {
PasswordCallback passwordCallback = (PasswordCallback) callbacks[i];
xmlString.append(getPasswordCallbackXML(passwordCallback));
} else if (callbacks[i] instanceof ChoiceCallback) {
ChoiceCallback choiceCallback = (ChoiceCallback) callbacks[i];
xmlString.append(getChoiceCallbackXML(choiceCallback));
} else if (callbacks[i] instanceof ConfirmationCallback) {
ConfirmationCallback conCallback = (ConfirmationCallback) callbacks[i];
xmlString.append(getConfirmationCallbackXML(conCallback));
} else if (callbacks[i] instanceof TextInputCallback) {
TextInputCallback textInputCallback = (TextInputCallback) callbacks[i];
xmlString.append(getTextInputCallbackXML(textInputCallback));
} else if (callbacks[i] instanceof TextOutputCallback) {
TextOutputCallback textOutputCallback = (TextOutputCallback) callbacks[i];
xmlString.append(getTextOutputCallbackXML(textOutputCallback));
} else if (callbacks[i] instanceof PagePropertiesCallback) {
PagePropertiesCallback pagePCallback = (PagePropertiesCallback) callbacks[i];
xmlString.append(getPagePropertiesCallbackXML(pagePCallback));
} else if (callbacks[i] instanceof LanguageCallback) {
LanguageCallback lc = (LanguageCallback) callbacks[i];
xmlString.append(getLanguageCallbackXML(lc));
} else if (callbacks[i] instanceof X509CertificateCallback) {
X509CertificateCallback xc = (X509CertificateCallback) callbacks[i];
xmlString.append(getX509CertificateCallbackXML(xc));
} else if (callbacks[i] instanceof HttpCallback) {
HttpCallback hc = (HttpCallback) callbacks[i];
xmlString.append(getHttpCallbackXML(hc));
} else if (callbacks[i] instanceof DSAMECallbackInterface) {
DSAMECallbackInterface dsameCallback = (DSAMECallbackInterface) callbacks[i];
xmlString.append(getCustomCallbackXML(dsameCallback));
} else if (callbacks[i] instanceof RedirectCallback) {
RedirectCallback redirectCallback = (RedirectCallback) callbacks[i];
xmlString.append(getRedirectCallbackXML(redirectCallback));
} else {
AuthenticationCallbackXMLHelper callbackXMLHelper = AuthenticationCallbackXMLHelperFactory.getCallbackXMLHelper();
if (callbackXMLHelper != null) {
xmlString.append(callbackXMLHelper.getAuthenticationCallbackXML(callbacks[i]));
}
}
}
xmlString.append(AuthXMLTags.CALLBACKS_END);
return (xmlString.toString());
}
use of javax.security.auth.callback.ChoiceCallback in project OpenAM by OpenRock.
the class LoginProcessTest method shouldRestartLoginProcessWhenCompositeUsedToChooseAuthModuleWithAuthTypeRealm.
@Test
public void shouldRestartLoginProcessWhenCompositeUsedToChooseAuthModuleWithAuthTypeRealm() throws AuthLoginException {
//Given
Callback callbackOne = mock(Callback.class);
ChoiceCallback callbackTwo = mock(ChoiceCallback.class);
Callback callbackThree = mock(Callback.class);
Callback[] callbacks = new Callback[] { callbackOne, callbackTwo, callbackThree };
given(authContext.getIndexType()).willReturn(AuthIndexType.COMPOSITE);
given(callbackTwo.getSelectedIndexes()).willReturn(new int[] { 0 });
given(callbackTwo.getChoices()).willReturn(new String[] { "CHOICE_ONE" });
given(coreServicesWrapper.getDataFromRealmQualifiedData("CHOICE_ONE")).willReturn("INDEX_VALUE");
given(coreServicesWrapper.getRealmFromRealmQualifiedData("CHOICE_ONE")).willReturn(null);
given(coreServicesWrapper.orgNameToDN("CHOICE_ONE")).willReturn("ORG_DN");
given(coreServicesWrapper.getCompositeAdviceType(authContext)).willReturn(AuthUtils.REALM);
given(coreServicesWrapper.getOrgConfiguredAuthenticationChain("ORG_DN")).willReturn("SERVICE_INDEX_VALUE");
//When
LoginProcess loginP = loginProcess.next(callbacks);
//Then
verify(authContext, never()).submitRequirements(callbacks);
verify(authContext).setOrgDN("ORG_DN");
verify(loginConfiguration).indexType(AuthIndexType.SERVICE);
verify(loginConfiguration).indexValue("SERVICE_INDEX_VALUE");
verify(loginAuthenticator).startLoginProcess(loginProcess);
assertNotEquals(loginP, loginProcess);
}
use of javax.security.auth.callback.ChoiceCallback in project OpenAM by OpenRock.
the class LoginProcessTest method shouldRestartLoginProcessWhenCompositeUsedToChooseAuthModule.
@Test
public void shouldRestartLoginProcessWhenCompositeUsedToChooseAuthModule() throws AuthLoginException {
//Given
Callback callbackOne = mock(Callback.class);
ChoiceCallback callbackTwo = mock(ChoiceCallback.class);
Callback callbackThree = mock(Callback.class);
Callback[] callbacks = new Callback[] { callbackOne, callbackTwo, callbackThree };
given(authContext.getIndexType()).willReturn(AuthIndexType.COMPOSITE);
given(callbackTwo.getSelectedIndexes()).willReturn(new int[] { 0 });
given(callbackTwo.getChoices()).willReturn(new String[] { "CHOICE_ONE" });
given(coreServicesWrapper.getDataFromRealmQualifiedData("CHOICE_ONE")).willReturn("INDEX_VALUE");
given(coreServicesWrapper.getRealmFromRealmQualifiedData("CHOICE_ONE")).willReturn(null);
given(coreServicesWrapper.getCompositeAdviceType(authContext)).willReturn(-1);
//When
LoginProcess loginP = loginProcess.next(callbacks);
//Then
verify(authContext, never()).submitRequirements(callbacks);
verify(authContext, never()).setOrgDN("ORG_DN");
verify(loginConfiguration).indexType(AuthIndexType.MODULE);
verify(loginConfiguration).indexValue("INDEX_VALUE");
verify(loginAuthenticator).startLoginProcess(loginProcess);
assertNotEquals(loginP, loginProcess);
}
use of javax.security.auth.callback.ChoiceCallback in project OpenAM by OpenRock.
the class LoginProcessTest method shouldRestartLoginProcessWhenLevelUsedToChooseAuthModuleWithAuthTypeService.
@Test
public void shouldRestartLoginProcessWhenLevelUsedToChooseAuthModuleWithAuthTypeService() throws AuthLoginException {
//Given
Callback callbackOne = mock(Callback.class);
ChoiceCallback callbackTwo = mock(ChoiceCallback.class);
Callback callbackThree = mock(Callback.class);
Callback[] callbacks = new Callback[] { callbackOne, callbackTwo, callbackThree };
given(authContext.getIndexType()).willReturn(AuthIndexType.LEVEL);
given(callbackTwo.getSelectedIndexes()).willReturn(new int[] { 0 });
given(callbackTwo.getChoices()).willReturn(new String[] { "CHOICE_ONE" });
given(coreServicesWrapper.getDataFromRealmQualifiedData("CHOICE_ONE")).willReturn("INDEX_VALUE");
given(coreServicesWrapper.getRealmFromRealmQualifiedData("CHOICE_ONE")).willReturn(null);
given(coreServicesWrapper.getCompositeAdviceType(authContext)).willReturn(AuthUtils.SERVICE);
//When
LoginProcess loginP = loginProcess.next(callbacks);
//Then
verify(authContext, never()).submitRequirements(callbacks);
verify(authContext, never()).setOrgDN(anyString());
verify(loginConfiguration).indexType(AuthIndexType.SERVICE);
verify(loginConfiguration).indexValue("INDEX_VALUE");
verify(loginAuthenticator).startLoginProcess(loginProcess);
assertNotEquals(loginP, loginProcess);
}
Aggregations