Bladeren bron

SAML SubjectGenerator

MaxKey 2 jaren geleden
bovenliggende
commit
9bf04827e0

+ 11 - 8
maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/provider/xml/SubjectGenerator.java

@@ -50,24 +50,27 @@ public class SubjectGenerator {
 							int validInSeconds,
 							UserInfo userInfo) {
 		String nameIdValue = userInfo.getUsername();
+		String nameIDType = NameIDType.UNSPECIFIED;
 		if(saml20Details.getNameidFormat().equalsIgnoreCase("persistent")) {
-		    
+			nameIDType = NameIDType.PERSISTENT;
 		}else if(saml20Details.getNameidFormat().equalsIgnoreCase("transient")) {
-            
+			nameIDType = NameIDType.TRANSIENT;
         }else if(saml20Details.getNameidFormat().equalsIgnoreCase("unspecified")) {
-            
+        	nameIDType = NameIDType.UNSPECIFIED;
         }else if(saml20Details.getNameidFormat().equalsIgnoreCase("emailAddress")) {
             if(userInfo.getEmail()!=null && !userInfo.getEmail().equals("")) {
                 nameIdValue = userInfo.getEmail();
             }
+            nameIDType = NameIDType.EMAIL;
         }else if(saml20Details.getNameidFormat().equalsIgnoreCase("X509SubjectName")) {
-            
+        	nameIDType = NameIDType.X509_SUBJECT;
         }else if(saml20Details.getNameidFormat().equalsIgnoreCase("WindowsDomainQualifiedName")) {
             if(userInfo.getWindowsAccount()!=null && !userInfo.getWindowsAccount().equals("")) {
                 nameIdValue = userInfo.getWindowsAccount();
             }
+            nameIDType = NameIDType.WIN_DOMAIN_QUALIFIED;
         }else if(saml20Details.getNameidFormat().equalsIgnoreCase("entity")) {
-            
+        	nameIDType = NameIDType.ENTITY;
         }else if(saml20Details.getNameidFormat().equalsIgnoreCase("custom")) {
             
         }else if(saml20Details.getNameidFormat().equalsIgnoreCase("Mobile")) {
@@ -92,7 +95,7 @@ public class SubjectGenerator {
         	//do nothing
         }
 		
-		NameID nameID =builderNameID(nameIdValue,assertionConsumerURL);
+		NameID nameID = builderNameID(nameIdValue,assertionConsumerURL,nameIDType);
 		Subject subject =builderSubject(nameID);
 		
 		String clientAddress=WebContext.getRequestIpAddress(WebContext.getRequest());
@@ -107,12 +110,12 @@ public class SubjectGenerator {
 		return subject;
 	}
 	
-	public NameID builderNameID(String value,String strSPNameQualifier){
+	public NameID builderNameID(String value,String strSPNameQualifier,String nameIDType){
 		//Response/Assertion/Subject/NameID	
 		NameID nameID = new NameIDBuilder().buildObject();
 		nameID.setValue(value);
 		//nameID.setFormat(NameIDType.PERSISTENT);
-		nameID.setFormat(NameIDType.UNSPECIFIED);
+		nameID.setFormat(nameIDType);
 		//nameID.setSPNameQualifier(strSPNameQualifier);
 		
 		return nameID;