- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-07-2016 09:52 AM
@Where is the Single Sign-On script located that uses the Customization Properties for Single Sign-on form?
This form has input fields for HTTP Header Name and ServiceNow field name to match against the incoming header.
I am aware of the External Authentication script located in the group of Installation Exist list of scripts. However the Single Sign-On doesn't seem to use the External Authentication script in the Installation Exist list of scripts.
I am assuming the Single Sign-On customization script exist somewhere within a Service Now table.
Thanks in advance for your assistance.
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-18-2017 08:05 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-07-2016 03:10 PM
I am in helsinki
I was trying to send you the xml file with the scripts in them I will make 4 separate replies with a screenshot of the script and then the text version.
var MultiSSO_Abstract_Core = Class.create();
MultiSSO_Abstract_Core.prototype = {
debugMode: false,
failedRedirect : "",
failedSSO: "",
logoutRedirect: "",
ssoHelper: null,
LOG_SOURCE : 'MultiSSO',
LOGGER : GlideSysLog,
initialize : function() {
if (gs.getProperty("glide.authenticate.multisso.debug") == "true"){
this.debugMode = true;
}
else {
this.debugMode = false;
}
},
getHeaderOrCookie : function(sentHeader){
//this.debug("Fetching header: " + sentHeader);
// Look in the Headers
var data = request.getHeader(sentHeader);
// If not, then check the URL Parameters
if (!data) {
data = request.getParameter(sentHeader);
}
// then maybe its a cookie
if (!data) {
var CookieMan = GlideCookieMan;
var cookies = request.getCookies();
data = CookieMan.getCookieValue(cookies, sentHeader);
}
return data;
},
printDebugValues : function(){
if (this.debugMode){
var headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()){
var aName = headerNames.nextElement();
this.debug("HEADER: " + aName + " --> " + request.getHeader(aName));
}
var parmMap = request.getParameterMap();
this.printHashTable(parmMap);
}
},
printHashTable : function( hashMap ){
var iterator = hashMap.keySet().iterator();// Iterate on keys
this.debug("Printing POST Parms...");
while ( iterator.hasNext() ){
var key = iterator.next();
var value = hashMap.get( key );
for(var i=0; i<value.length; i++){
this.debug( "POST Parm '" + key + "': " + value[i] );
}
}
},
debug : function (msg){
if (this.debugMode){
this.LOGGER.info(this.LOG_SOURCE, msg);
}
},
error: function (msg){
this.LOGGER.info(this.LOG_SOURCE, "ERROR: " + msg);
var lMsg = gs.getMessage(msg);
gs.addErrorMessage(lMsg );
},
//GETTERS
getIDPRedirect : function (){
var idp_url = (this.propertiesGR.failed_requirement_redirect) ? this.propertiesGR.failed_requirement_redirect: this.propertiesGR.idp_authnrequest_url;
return idp_url;
},
getFailedSSORedirect : function (){
var failure_url = (this.propertiesGR.failed_redirect) ? this.propertiesGR.failed_redirect: "failed_authentication";
return failure_url ;
},
getLogoutRedirect : function (){
var logout_url = (this.propertiesGR.external_logout_redirect) ? this.propertiesGR.external_logout_redirect: this.propertiesGR.idl_logout_url;
return logout_url;
},
getSecretKey : function (data){
var cred = new String(data);
var e = new GlideEncrypter();
var jsCred = cred + '';
var decryptedData = e.decrypt(jsCred);
return decryptedData ;
},
//SETTERS
setSSOHelper : function (helper){
this.ssoHelper = helper;
this.propertiesGR = this.ssoHelper.getProperties();
}
};
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-07-2016 03:11 PM
gs.include("SSO_Helper");
gs.include("SSO_SAMLMetaUtil");
var MultiSSO_ClientHelper = Class.create();
// method name cannot start with "get"!
MultiSSO_ClientHelper.prototype = Object.extendsObject(AbstractAjaxProcessor , {
isPublic: function() {
return true;
},
getDiscoveryURL: function(serviceURL, federationId) {
var pat = /^https?:\/\//i;
if (pat.test(serviceURL)) {
// we always use it for sp entity id which is globally unique name
var instanceURL = new SSO_SAMLMetaUtil().getInstanceURL();
var returnURL = GlideStringUtil.urlEncode(instanceURL + "/login_with_sso.do");
return serviceURL + "?entityID=" + GlideStringUtil.urlEncode(instanceURL) + "&return=" + returnURL;
}
return serviceURL + "?glide_federation_id=" + federationId;
},
// return auto prov idp id or select URL
autoProvIdPOrSelectURL: function() {
if ("true" == gs.getProperty("glide.authenticate.multisso.user.autoprovision")) {
var atp = SNC.SSOUtils.getAutoProvSAMLIdPList();
var count = atp.getRowCount();
if (count>1) {
var result = this.newItem("result");
var url = "/idp_disco.do";
SSO_Helper.debug("Returning auto provisioning discovery URL: " + url);
result.setAttribute("discovery_service_url", url);
return url;
}
else {
// only one auto prov idp found just login with this idp
atp.next();
if (count == 1) {
var result = this.newItem("result");
var idpId = atp.getUniqueValue();
SSO_Helper.debug("Returning auto provisioning IdP: " + idpId);
result.setAttribute(SNC.SSOUtils.SSOID(), idpId);
return idpId;
}
}
}
return null;
},
ssoByUser: function() {
var userId = this.getParameter("sysparm_user_id");
var user_field = gs.getProperty("glide.authenticate.multisso.login_locate.user_field", "user_name");
SSO_Helper.debug("Looking up user id : " + userId);
var userTab = new GlideRecord("sys_user");
userTab.addQuery(user_field, userId);
userTab.addActiveQuery();
userTab.queryNoDomain();
var found = false;
if(userTab.next()) {
var source = userTab.sso_source;
if (GlideStringUtil.notNil(source)) {
SSO_Helper.debug("Found SSO " + source + " for the user : " + userId);
var values = source.split(":");
if ( values.length > 1 ) {
if ("sso" == values[0] ) {
SSO_Helper.debug("Returing SSO IdP from user record: " + values[1]);
var ssoBase = new GlideRecord("sso_properties");
ssoBase.addActiveQuery();
ssoBase.addQuery("sys_id", values[1]);
ssoBase.queryNoDomain();
if (ssoBase.next()) {
var result = this.newItem("result");
result.setAttribute(SNC.SSOUtils.SSOID(), values[1]);
found = true;
} else {
SSO_Helper.debug("SSO Provider not found or inActive at user record: " + values[1]);
found = false;
}
} else if ( "federation" == values[0] ) {
var federationId = values[1];
SSO_Helper.debug("Returing SSO federation from user record: " + federationId);
var fed = new GlideRecord("sso_federation");
fed.addActiveQuery();
fed.addQuery("sys_id", federationId);
fed.queryNoDomain();
if (fed.next()) {
found = true;
var url = this.getDiscoveryURL(fed.discovery_service_url, federationId);
SSO_Helper.debug("Discovery URL: " + url);
var result = this.newItem("result");
result.setAttribute("discovery_service_url", url);
} else {
found = false;
SSO_Helper.debug("Federation not found or inActive at user record: " + federationId);
}
}
}
}
if(!found) {
// try user company
var company = userTab.company;
if (company && !company.isNil()) {
// get the source field from referenced company record.
var source = company.getRefRecord().sso_source;
if (GlideStringUtil.notNil(source)) {
SSO_Helper.debug("Found SSO " + source + " for the user : " + userId + " from its company record");
var values = source.split(":");
if ( values.length > 1 ) {
if ( "sso" == values[0] ) {
SSO_Helper.debug("Returing SSO IdP from company record: " + values[1]);
var ssoBase = new GlideRecord("sso_properties");
ssoBase.addActiveQuery();
ssoBase.addQuery("sys_id", values[1]);
ssoBase.queryNoDomain();
if (ssoBase.next()) {
var result = this.newItem("result");
result.setAttribute(SNC.SSOUtils.SSOID(), values[1]);
found = true;
} else {
SSO_Helper.debug("SSO Provider not found or inActive at company record: " + values[1]);
found = false;
}
} else if ( "federation" == values[0] ) {
var federationId = values[1];
SSO_Helper.debug("Returing SSO federation from company record: " + federationId);
var fed = new GlideRecord("sso_federation");
fed.addActiveQuery();
fed.addQuery("sys_id", federationId);
fed.queryNoDomain();
if (fed.next()) {
found = true;
var url = this.getDiscoveryURL(fed.discovery_service_url, federationId);
SSO_Helper.debug("Discovery URL: " + url);
var result = this.newItem("result");
result.setAttribute("discovery_service_url", url);
} else {
found = false;
SSO_Helper.debug("Federation not found or inActive at company record: " + federationId);
}
}
}
}
}
}
} else {
// user not found, check if we need auto provisioning
var autoProvOrURL = this.autoProvIdPOrSelectURL();
if (GlideStringUtil.notNil(autoProvOrURL)) {
found = true;
}
}
if (!found) {
// no sso found, try to use the default one
var defaultProvider = SSO_Helper.getDefaultSSOProperties();
if (defaultProvider) {
found = true;
var defaultSysId = defaultProvider.sys_id;
SSO_Helper.debug("Using default SSO: " + defaultSysId);
var result = this.newItem("result");
result.setAttribute(SNC.SSOUtils.SSOID(), defaultSysId);
}
}
if (!found)
this.setError(gs.getMessage("External login not found"));
},
loadSAMLMetaFromXML: function() {
var meta_xml = this.getParameter("sysparm_meta_xml");
var sys_id = this.getParameter("sysparm_sys_id");
var resultArray = new SSO_SAMLMetaUtil().loadSAMLMetaFromXML(meta_xml, sys_id);
var result = this.newItem("result");
if(resultArray.sys_id != null)
result.setAttribute("sys_id", resultArray.sys_id);
result.setAttribute("error_msg", resultArray.error_msg);
},
loadSAMLMetaFromURL: function() {
var meta_url = this.getParameter("sysparm_meta_url");
var sys_id = this.getParameter("sysparm_sys_id");
var resultArray = new SSO_SAMLMetaUtil().loadSAMLMetaFromURL(meta_url, sys_id);
var result = this.newItem("result");
if(resultArray.sys_id != null)
result.setAttribute("sys_id", resultArray.sys_id);
result.setAttribute("error_msg", resultArray.error_msg);
},
type: 'MultiSSO_ClientHelper'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-07-2016 03:12 PM
gs.include("PrototypeServer");
var MultiSSO_DigestedToken = Class.create();
MultiSSO_DigestedToken.prototype = Object.extend(new MultiSSO_Abstract_Core(), {
process : function() {
var userData = SSO_Helper.getHeaderOrCookie(this.propertiesGR.header_key);
var userDigest = SSO_Helper.getHeaderOrCookie(this.propertiesGR.encrypted_key);
var userField = this.propertiesGR.user_field;
var secretKey = this.getSecretKey(this.propertiesGR.secret_key);
this.debug("User Data: " + userData);
this.debug("User Digest Received: " + userDigest);
this.debug("User Field: " + userField);
// if found run encryption
if (userData && userDigest) {
try {
// Replace all spaces with plus(+)'s, converted in url
userDigest = userDigest.replaceAll(' ', '+');
// Ecrypt the username and secretKey combination to calculate digest
var userDigestCalc = this.getDigest(userData, secretKey);
this.debug ("User Digest Received: " + userDigest + " Calculated: " + userDigestCalc );
// Check for match if recieved digest data matches calculated digest
if (userDigest == userDigestCalc) {
this.debug("Digest value received matches with calculated");
var ugr = new GlideRecord("sys_user");
ugr.initialize();
if (!ugr.isValidField(userField)) {
var Log = GlideLog;
Log.warn("External authorization is set to use field: '" + userField + "' which doesn't exist");
gs.log("External authorization is set to use field: '" + userField + "' which doesn't exist");
SNC.SecurityEventSender.sendDigestLoginFailureEventData("user_name=" + userData + ",multisso=true,idpsysid=" + this.propertiesGR.getUniqueValue());
return this.getFailedRedirect();
}
ugr.addQuery(userField, userData);
ugr.query();
if (!ugr.next()) {
var User = GlideUser;
var userLoad = User.getUser(userData);
if (userLoad == null){
gs.log("User authenticated...but we cannot find this user in Service-now");
SNC.SecurityEventSender.sendDigestLoginFailureEventData("user_name=" + userData + ",multisso=true,idpsysid=" + this.propertiesGR.getUniqueValue());
return this.getFailedRedirect();
}
ugr.initialize();
ugr.addQuery(userField, userData);
ugr.query();
if (!ugr.next()){
gs.log("User authenticated...but we cannot find this user in Service-now 2");
SNC.SecurityEventSender.sendDigestLoginFailureEventData("user_name=" + userData + ",multisso=true,idpsysid=" + this.propertiesGR.getUniqueValue());
return this.getFailedRedirect();
}
}
this.debug("Success. Logging in user: " + userData);
request.getSession().setAttribute("glide.multiSSO.logout_url", this.propertiesGR.external_logout_redirect.toString());
// userDataValidated could be any of email, user_name or others
var userDataValidated = ugr.getValue(userField);
SNC.SecurityEventSender.sendDigestLoginSuccessEventData("user_name=" + userData, "multisso=true,idpsysid=" + this.propertiesGR.getUniqueValue());
return userDataValidated;
} else {
gs.log("User Digest Received did not match Calculated Digest");
SNC.SecurityEventSender.sendDigestLoginFailureEventData("user_name=" + userData, "multisso=true,idpsysid=" + this.propertiesGR.getUniqueValue());
return this.getFailedRedirect();
}
} catch(e) {
gs.log(e);
SNC.SecurityEventSender.sendDigestLoginFailureEventData("user_name=" + userData, "multisso=true,idpsysid=" + this.propertiesGR.getUniqueValue());
return this.getFailedRedirect();
}
// Encoded data didn't match recieved Encoded data
} else {
// If there is no userData and userDigest together then redirect him to another portal.
// Example: Customer's Intranet site where user's Digest Token Authentication URL could already be present.
return this.getPortalURLRedirect();
}
},
getDigest : function( data, secretKey ) {
try {
// default to something JDK 1.4 has
var MAC_ALG = "HmacSHA1";
return SncAuthentication.encode(data, secretKey, MAC_ALG);
} catch (e) {
throw 'failed_missing_requirement';
}
},
getFailedRedirect : function (){
var failure_url = (this.propertiesGR.failed_redirect) ? this.propertiesGR.failed_redirect.toString(): "failed_authentication";
return failure_url;
},
getPortalURLRedirect : function () {
var portalURL = (this.propertiesGR.portal_url_redirect) ? this.propertiesGR.portal_url_redirect.toString() : "failed_authentication";
return portalURL;
}
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-07-2016 03:12 PM
gs.include("PrototypeServer");
gs.include("SAML2_update1");
gs.include("SSO_Helper");
gs.include("MultiSSO_SAML2_UserProvisioning");
var MultiSSO_SAML2_Update1 = Class.create();
MultiSSO_SAML2_Update1.prototype = Object.extend(new MultiSSO_Abstract_Core(), {
initialize: function() {
},
process: function() {
this.redirectURL = null;
this.requestType = "request";
try {
var result = this.processSAMLMessage();
return result;
} finally {
this.setActionRedirectURL();
}
},
processSAMLMessage: function() {
var Session = GlideUISession;
var relayState = request.getParameter("RelayState");
this.SAML2 = new SAML2_update1(this.ssoHelper);
this.logoutURL = (this.propertiesGR.idp_logout_url) ? this.propertiesGR.idp_logout_url : this.propertiesGR.external_logout_redirect;
this.serviceURL = this.propertiesGR.service_url;
this.userField = this.propertiesGR.user_field;
var samlResponseObject = null;
if(GlideController.exists("SAMLResponseObject"))
samlResponseObject = GlideController.getGlobal("SAMLResponseObject");
else {
this.logDebug("SAMLResponseObject not found in GlideController.");
samlResponseObject = this.SAML2.getSAMLObjectFromRequest(request);
}
// Refresh login request
if(!samlResponseObject && !relayState) {
var redirectURL = this.SAML2.generateAuthnRequestRedirectURL(request, false);
if (GlideStringUtil.nil(redirectURL))
return "failed_missing_requirement";
SNC.SecurityEventSender.sendSAMLRedirectSentEventData("", "multisso=true,idpsysid=" + this.propertiesGR.getUniqueValue());
return redirectURL;
}
var httpSession = request.getSession();
var inResponseTo = httpSession.getAttribute("glide.saml2.session_request_id");
SSO_Helper.debug("Session inResponseTo: " + inResponseTo);
if (this.SAML2.isLogoutResponse(samlResponseObject)) {
this.logDebug("It is a logout response");
this.requestType = "logoutResponse";
if(!this.SAML2.validateLogoutResponseObject(samlResponseObject, inResponseTo)) {
this.logError("Could not validate SAML LogoutResponse");
gs.eventQueue(this.SAML2.logoutFailureEventId, null, Session.getId(httpSession), "SAML2 LogoutResponse validation failed.");
}
return "logout_success";
}
// If none of above, this is login response from IDP.
return this.loginProcess(samlResponseObject, inResponseTo);
},
isIdPInitiated: function(inResponseTo) {
// for IdP initiated SAML response, inResponseTo is empty
return GlideStringUtil.nil(inResponseTo);
},
loginProcess : function(samlResponseObject, inResponseTo) {
var respType = this.isIdPInitiated(inResponseTo) ? "IdP" : "SP";
var eventLogParm2 = "initiator=" + respType + ",multisso=true,idpsysid=" + this.propertiesGR.getUniqueValue();
SNC.SecurityEventSender.sendSAMLRedirectReceivedEventData("", eventLogParm2);
if (!this.SAML2.validateLoginResponse(samlResponseObject, inResponseTo)) {
this.logError("Could not validate SAMLResponse");
SNC.SecurityEventSender.sendSAMLLoginFailureEventData("", eventLogParm2);
return "failed_authentication";
}
var nameId = null;
if ( this.propertiesGR.nameid_attribute
&& !this.propertiesGR.nameid_attribute.isNil() ) {
this.logDebug("Use nameid_attribute to look up NameID.");
nameId = this.SAML2.getAssertionAttrValueByNameOrFriendlyName(this.propertiesGR.nameid_attribute);
}
else
nameId = this.SAML2.getSubjectNameID();
if (nameId == null) {
SNC.SSOUtils.writeMultipleLogSummary(false, gs.getMessage("Subject NameID validation failed"), gs.getMessage("Could not extract Subject NameID from SAMLResponse"), 'subject');
this.logError("Could not extract Subject NameID from SAMLResponse");
SNC.SecurityEventSender.sendSAMLLoginFailureEventData("", eventLogParm2);
return this.propertiesGR.getValue("failed_requirement_redirect");
}
this.logDebug("SAML2 NameID: " + nameId);
var eventLogParm1 = "user_name=" + nameId;
var sessionIndex = this.SAML2.getSessionIndex();
if (sessionIndex == null) {
SNC.SSOUtils.writeMultipleLogSummary(false, gs.getMessage("SessionIndex value not found"), gs.getMessage("Could not extract SessionIndex from SAMLResponse"), '');
this.logError("Could not extract SessionIndex from SAMLResponse");
SNC.SecurityEventSender.sendSAMLLoginFailureEventData(eventLogParm1, eventLogParm2);
return this.propertiesGR.failed_requirement_redirect;
}
this.logDebug("SAML2 SessionIndex: " + sessionIndex);
// pass these values to Logout script
if(!SSO_Helper.isTestSAMLConnection()) {
request.getSession().setAttribute("glide.saml2.session_index", sessionIndex);
request.getSession().setAttribute("glide.saml2.session_id", nameId);
request.getSession().setAttribute("glide.multiSSO.logout_url", this.logoutURL);
request.getSession().setAttribute("glide.multiSSO.service_url", this.serviceURL);
}
return this.loginUser(nameId, eventLogParm2);
},
setActionRedirectURL: function() {
var url = null;
var isTestConn = GlideController.getGlobal("sysparm_saml_tc");
if ("true" == isTestConn) {
this.logDebug("request type : " + this.requestType);
if (this.requestType == "logoutResponse") {
url = "/saml_test_conn_logout_completed.do?sysparm_nostack=true&sysparm_test_sso_id=" + this.propertiesGR.getUniqueValue();
}
else
url = "/saml_test_conn_completed.do?sysparm_nostack=true&sysparm_test_sso_id=" + this.propertiesGR.getUniqueValue();
}
else if (this.redirectURL)
url = this.redirectURL;
if(url){
this.logDebug("We will be redirecting user to the URL: " + url);
action.setRedirect(url);
}
},
loginUser : function (nameId, eventLogParm2) {
if (nameId == null) {
SNC.SecurityEventSender.sendSAMLLoginFailureEventData("", eventLogParm2);
return this.propertiesGR.failed_requirement_redirect;
}
var eventLogParm1 = "user_name=" + nameId;
if(!this.userField || this.userField == ''){
var errorMessage = gs.getMessage("User Field validation failed");
SNC.SSOUtils.writeLogSummary(false, errorMessage, gs.getMessage("Ensure that the 'User Field' field is not null or blank"));
this.logError(errorMessage);
SNC.SecurityEventSender.sendSAMLLoginFailureEventData(eventLogParm1,eventLogParm2);
return "failed_authentication";
}else if(!GlideTableDescriptor.fieldExists('sys_user',this.userField)) {
var errorMessage = gs.getMessage("Invalid User Field. {0} is not a field on the sys_user table.", this.userField);
SNC.SSOUtils.writeLogSummary(false, gs.getMessage("User Field validation failed"), errorMessage);
this.logError(errorMessage);
SNC.SecurityEventSender.sendSAMLLoginFailureEventData(eventLogParm1,eventLogParm2);
return "failed_authentication";
}
var ugr = new GlideRecord("sys_user");
ugr.addQuery(this.userField, nameId);
ugr.query();
var foundUser = ugr.next();
if (!foundUser) {
if (! SSO_Helper.isTestSAMLConnection()) {
this.importOrUpdateSAMLUser();
ugr.query(); // query again to make sure import is successful
foundUser = ugr.next();
}
if (!foundUser) {
var errorMessage = gs.getMessage("User: ") + nameId + gs.getMessage(" not found");
SNC.SSOUtils.writeMultipleLogSummary(false, errorMessage, gs.getMessage("Ensure that the user you are trying the test connection with is present in the system."), 'userField');
this.logError(errorMessage);
SNC.SecurityEventSender.sendSAMLLoginFailureEventData(eventLogParm1,eventLogParm2);
return "failed_authentication";
}
} else if(SSO_Helper.isTestSAMLConnection()) {
if(ugr.locked_out == true) {
var errorMessage = gs.getMessage("User: ") + nameId + gs.getMessage(" is locked out");
SNC.SSOUtils.writeMultipleLogSummary(false, errorMessage, gs.getMessage("Ensure that the user you are trying the test connection with is active and not locked out."), 'userField');
this.logError(errorMessage);
SNC.SecurityEventSender.sendSAMLLoginFailureEventData(eventLogParm1,eventLogParm2);
return "failed_authentication";
}
if(ugr.active == false){
var errorMessage = gs.getMessage("User: ") + nameId + gs.getMessage(" is not active");
SNC.SSOUtils.writeMultipleLogSummary(false, errorMessage, gs.getMessage("Ensure that the user you are trying the test connection with is active."), 'userField');
this.logError(errorMessage);
SNC.SecurityEventSender.sendSAMLLoginFailureEventData(eventLogParm1,eventLogParm2);
return "failed_authentication";
}
} else {
if (this.propertiesGR.auto_update_user)
this.importOrUpdateSAMLUser();
}
var userName = ugr.getValue("user_name");
if ( GlideStringUtil.nil(userName) ) {
SNC.SecurityEventSender.sendSAMLLoginFailureEventData(eventLogParm1, eventLogParm2);
this.logError("user_name value is empty.");
return "failed_authentication";
}
// only set the cookie if it is NOT testing
if (! SSO_Helper.isTestSAMLConnection()) {
this.redirectURL = request.getSession().getAttribute("SAML_RelayState");
if (! this.redirectURL) {
this.logDebug("SAML_RelayState is not available in the session, try the RelayState in the request.");
this.redirectURL = request.getParameter("RelayState");
}
SNC.SecurityEventSender.sendSAMLLoginSuccessEventData(eventLogParm1, eventLogParm2);
request.getSession().setAttribute("SAML_RelayState", null);
// successfully logged in. we need set sso_id cookie
this.ssoHelper.saveInCookie(SNC.SSOUtils.SSOID(), this.propertiesGR.sys_id);
request.getSession().setAttribute("glide.authenticate.multisso.login.method", "saml");
}
return userName;
},
importOrUpdateSAMLUser: function() {
// will try to update table schema and insert the import set row
if (SNC.SSOUtils.isAutoProvisiongEnabled() && this.propertiesGR.auto_provision) {
var userImportTable = this.propertiesGR.transform_map.source_table;
SSO_Helper.debug("SAML User Import Table: " + userImportTable);
var userProvising = new MultiSSO_SAML2_UserProvisioning(userImportTable, this.SAML2.SAMLAssertion, this.propertiesGR.getUniqueValue());
userProvising.loadImportSet();
}
},
logDebug : function (msg) {
this.SAML2.logDebug(msg);
},
logError : function (msg) {
var lMsg = gs.getMessage(msg);
if (! SSO_Helper.isTestSAMLConnection())
gs.addErrorMessage(lMsg);
if (SSO_Helper.isTestSAMLConnection())
SNC.SSOUtils.writeToLogStream(0, lMsg);
gs.logError(lMsg, "SAML2");
}
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-08-2016 01:04 PM
Thanks Blaze, but the script I was looking for was the script for the form "Single Sign-on". If you filter for that you will find the that form.
Thanks again.