List<String> attemptedUsernames = new ArrayList<>();
for (Assertion assertion : responseToken.getResponse().getAssertions()) {
- List<String> candidateUsernames = SecurityUtils.findSamlAssertionCandidateUsernames(assertion, assertionProbes);
+ Set<String> candidateUsernames = SecurityUtils.findSamlAssertionCandidateUsernames(assertion, assertionProbes);
for (String candidateUsername : candidateUsernames) {
try {
package org.collectionspace.services.common.security;
import java.util.ArrayList;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
import java.net.URISyntaxException;
import java.util.StringTokenizer;
/*
* Retrieve the possible CSpace usernames from a SAML assertion.
*/
- public static List<String> findSamlAssertionCandidateUsernames(Assertion assertion, AssertionProbesType assertionProbes) {
- List<String> candidateUsernames = new ArrayList<>();
+ public static Set<String> findSamlAssertionCandidateUsernames(Assertion assertion, AssertionProbesType assertionProbes) {
+ Set<String> candidateUsernames = new LinkedHashSet<>();
List<Object> probes = null;
if (assertionProbes != null) {
if (probe instanceof AssertionNameIDProbeType) {
String subjectNameID = assertion.getSubject().getNameID().getValue();
- if (subjectNameID != null && subjectNameID.length() > 0) {
+ if (subjectNameID != null && subjectNameID.contains("@")) {
candidateUsernames.add(subjectNameID);
}
} else if (probe instanceof AssertionAttributeProbeType) {
XSString stringValue = (XSString) value;
String candidateValue = stringValue.getValue();
- if (candidateValue != null && candidateValue.length() > 0) {
+ if (candidateValue != null && candidateValue.contains("@")) {
values.add(candidateValue);
}
}