Repository: cloudstack Updated Branches: refs/heads/master b528047fb -> 1a7f76ac7
CLOUDSTACK-8037: Fix attribute detection, tested to work with onelogin.com Signed-off-by: Rohit Yadav <[email protected]> (cherry picked from commit 23de431f96e1dad8a21055ac98926c428e83c775) Signed-off-by: Rohit Yadav <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1a7f76ac Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1a7f76ac Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1a7f76ac Branch: refs/heads/master Commit: 1a7f76ac77b05eec796637f96b4ceca3f1c7af33 Parents: b528047 Author: Rohit Yadav <[email protected]> Authored: Mon Jan 12 18:55:52 2015 +0530 Committer: Rohit Yadav <[email protected]> Committed: Mon Jan 12 19:41:10 2015 +0530 ---------------------------------------------------------------------- .../command/SAML2LoginAPIAuthenticatorCmd.java | 37 +++++++++++--------- 1 file changed, 21 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1a7f76ac/plugins/user-authenticators/saml2/src/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java ---------------------------------------------------------------------- diff --git a/plugins/user-authenticators/saml2/src/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java b/plugins/user-authenticators/saml2/src/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java index e1ccc02..6e86d23 100644 --- a/plugins/user-authenticators/saml2/src/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java +++ b/plugins/user-authenticators/saml2/src/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java @@ -240,22 +240,27 @@ public class SAML2LoginAPIAuthenticatorCmd extends BaseCmd implements APIAuthent } } - AttributeStatement attributeStatement = assertion.getAttributeStatements().get(0); - List<Attribute> attributes = attributeStatement.getAttributes(); - - // Try capturing standard LDAP attributes - for (Attribute attribute: attributes) { - String attributeName = attribute.getName(); - String attributeValue = attribute.getAttributeValues().get(0).getDOM().getTextContent(); - if (attributeName.equalsIgnoreCase("uid") && uniqueUserId == null) { - username = attributeValue; - uniqueUserId = SAMLUtils.createSAMLId(username); - } else if (attributeName.equalsIgnoreCase("givenName")) { - firstName = attributeValue; - } else if (attributeName.equalsIgnoreCase(("sn"))) { - lastName = attributeValue; - } else if (attributeName.equalsIgnoreCase("mail")) { - email = attributeValue; + List<AttributeStatement> attributeStatements = assertion.getAttributeStatements(); + if (attributeStatements != null && attributeStatements.size() > 0) { + for (AttributeStatement attributeStatement: attributeStatements) { + if (attributeStatement == null) { + continue; + } + // Try capturing standard LDAP attributes + for (Attribute attribute: attributeStatement.getAttributes()) { + String attributeName = attribute.getName(); + String attributeValue = attribute.getAttributeValues().get(0).getDOM().getTextContent(); + if (attributeName.equalsIgnoreCase("uid") && uniqueUserId == null) { + username = attributeValue; + uniqueUserId = SAMLUtils.createSAMLId(username); + } else if (attributeName.equalsIgnoreCase("givenName")) { + firstName = attributeValue; + } else if (attributeName.equalsIgnoreCase(("sn"))) { + lastName = attributeValue; + } else if (attributeName.equalsIgnoreCase("mail")) { + email = attributeValue; + } + } } }
