This commit is contained in:
Crystal.Sea
2020-09-23 07:41:56 +08:00
parent 119810b00d
commit 69159e46de
4 changed files with 62 additions and 4 deletions

View File

@@ -85,6 +85,7 @@ public class AssertionGenerator {
Assertion assertion = new AssertionBuilder().buildObject();;
//Subject
Subject subject = subjectGenerator.generateSubject(
saml20Details,
assertionConsumerURL,
inResponseTo,
validInSeconds);

View File

@@ -19,7 +19,10 @@
package org.maxkey.authz.saml20.provider.xml;
import org.apache.commons.lang3.StringUtils;
import org.maxkey.authz.saml.service.TimeService;
import org.maxkey.domain.UserInfo;
import org.maxkey.domain.apps.AppsSAML20Details;
import org.maxkey.web.WebContext;
import org.opensaml.saml2.core.NameID;
import org.opensaml.saml2.core.NameIDType;
@@ -41,12 +44,54 @@ public class SubjectGenerator {
this.timeService = timeService;
}
public Subject generateSubject(
public Subject generateSubject( AppsSAML20Details saml20Details,
String assertionConsumerURL,
String inResponseTo,
int validInSeconds) {
UserInfo userInfo = WebContext.getUserInfo();
String nameIdValue = userInfo.getUsername();
if(saml20Details.getNameidFormat().equalsIgnoreCase("persistent")) {
}else if(saml20Details.getNameidFormat().equalsIgnoreCase("transient")) {
}else if(saml20Details.getNameidFormat().equalsIgnoreCase("unspecified")) {
}else if(saml20Details.getNameidFormat().equalsIgnoreCase("emailAddress")) {
if(userInfo.getEmail()!=null && !userInfo.getEmail().equals("")) {
nameIdValue = userInfo.getEmail();
}
}else if(saml20Details.getNameidFormat().equalsIgnoreCase("X509SubjectName")) {
}else if(saml20Details.getNameidFormat().equalsIgnoreCase("WindowsDomainQualifiedName")) {
if(userInfo.getWindowsAccount()!=null && !userInfo.getWindowsAccount().equals("")) {
nameIdValue = userInfo.getWindowsAccount();
}
}else if(saml20Details.getNameidFormat().equalsIgnoreCase("entity")) {
}else if(saml20Details.getNameidFormat().equalsIgnoreCase("custom")) {
}else if(saml20Details.getNameidFormat().equalsIgnoreCase("Mobile")) {
if(userInfo.getMobile()!=null && !userInfo.getMobile().equals("")) {
nameIdValue = userInfo.getMobile();
}
}else if(saml20Details.getNameidFormat().equalsIgnoreCase("EmployeeNumber")) {
if(userInfo.getEmployeeNumber()!=null && !userInfo.getEmployeeNumber().equals("")) {
nameIdValue = userInfo.getEmployeeNumber();
}
}
if(!StringUtils.isEmpty(saml20Details.getNameIdSuffix())) {
nameIdValue = nameIdValue + saml20Details.getNameIdSuffix();
}
if(saml20Details.getNameIdConvert()==0) {
}else if(saml20Details.getNameIdConvert()==1) {
nameIdValue = nameIdValue.toUpperCase();
}else if(saml20Details.getNameIdConvert()==1) {
nameIdValue = nameIdValue.toLowerCase();
}
String nameIdValue =WebContext.getUserInfo().getUsername();
NameID nameID =builderNameID(nameIdValue,assertionConsumerURL);
Subject subject =builderSubject(nameID);