Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

SSO not working

snowuser111
Kilo Guru

Hi,

Can anyone help SSO is not working. My SPEntryPage is as below. Have both system property in place.It is not redirecting to /myportal

Can anyone help on this please. Bit urgent

------------------------------------------------------------------------------------------------------------

/**

*

*   Service Portal sample script include to indicate

*   1. which login page should be used

*   2. the starting page after the user is authenticated

*

*   Script is configured using system properties

*   PROPERTY                                               VALUE

*   glide.entry.page.script                 new SPEntryPage().getLoginURL();

*   glide.entry.first.page.script     new SPEntryPage().getFirstPageURL();

*

* functions can return a path or null if no overrides are necessary

*

**/

var SPEntryPage = Class.create();

SPEntryPage.prototype = {

  initialize: function() {

  this.logVariables = false;   // for debugging

  this.portal = "/myportal/";           // The URL suffix specified in the sp_portal record

  },

  /***

  *

  * Referred to by property: glide.entry.page.script

  *

  **/

  getLoginURL: function() {

  // When requesting a page directly (eg: /problem_list.do)

  // The platform session_timeout.do sets the login page to welcome.do

  // Since we are handling the login, clear that value

  var session = gs.getSession();

  var nt = session.getProperty("nav_to");

  var sPage = session.getProperty("starting_page");

  if (nt == "welcome.do")

  session.clearProperty("nav_to");

  if (!sPage && !nt)

  session.putProperty("starting_page", gs.getProperty("glide.login.home"));

  // Send the user to the portal's login page

  var portalGR = new GlideRecord("sp_portal");

  portalGR.addQuery("url_suffix", this.portal.replace(/\//g, ""));

  portalGR.addNotNullQuery("login_page");

  portalGR.query();

  if (portalGR.next())

  return this.portal + "?id=" + portalGR.login_page.id;

  // Send to the a default login page

  return this.portal + "?id=login";

  },

  /***

  *

  * Referred to by property: glide.entry.first.page.script

  *

  **/

  getFirstPageURL: function() {

  var session = gs.getSession();

  this.logProperties('before', session);

  // has roles and is not a Service Portal page - go to UI16

  var nt = session.getProperty("nav_to");

  var isServicePortalURL = new GlideSPScriptable().isServicePortalURL(nt);

  var redirectURL = session.getProperty("login_redirect");

  //if (user.hasRole('admin') && !redirectURL)

  if (user.hasRoles() && !redirectURL && !isServicePortalURL)

  return;

  // user may have logged in from a frame, the /login_redirect.do page will bust out of it

  if (!redirectURL) {

  // redirectURL is nav_to

  // if nav_to == "welcome.do" then use starting_page

  var sPage = session.getProperty("starting_page");

  if (sPage && nt == "welcome.do")

  gs.log("loginredicect"+nt);

  nt = sPage;

  // Avoid a redirect loop to the home page

  if (nt) {

  var ep = gs.getProperty("glide.login.home");

  if (ep == nt)

  nt = null;

  }

  session.putProperty("login_redirect", nt || "true");

  return "/login_redirect.do?sysparm_stack=no";

  }

  session.clearProperty("login_redirect");

  var returnUrl = this.portal;

  if (redirectURL && redirectURL != "true") {

  var spUrl = new GlideSPScriptable().mapUrlToSPUrl(redirectURL);

  returnUrl = spUrl ? this.portal + "?" + spUrl : redirectURL;

  }

  this.logProperties('after', session);

  if (!this.logVariables) {

  gs.log('redirectURL: ' + redirectURL);

  gs.log('User: ' + user.getName());

  gs.log('is internal: ' + (!user.hasRoles()));

  gs.log('returnUrl: ' + returnUrl);

  }

  return returnUrl;

  },

  logProperties: function(beforeOrAfter, session) {

  if (!this.logVariables)

  return;

  gs.log('SPEntryPage: Redirect ------------------------------- ' + beforeOrAfter);

  gs.log('session.starting_page: ' + session.getProperty("starting_page"));

  gs.log('session.nav_to: ' + session.getProperty("nav_to"));

  gs.log('session.login_redirect: ' + session.getProperty("login_redirect"));

  gs.log('gs.fURI: ' + session.getURI());

  },

  type: 'SPEntryPage'

};

-----------------------------------------------------------------------------------------------------------

1 ACCEPTED SOLUTION

It is resolved we modified script it is working


View solution in original post

6 REPLIES 6

Goran WitchDoc
ServiceNow Employee
ServiceNow Employee

Just a quick check.. your properties.. did you include the semicolon? cos you shouldnt 😃



//Göran


properties does not have semicolon



what is wrong please help


bianca_vaccarin
ServiceNow Employee
ServiceNow Employee

Not sure if you ever figured out why you were not redirecting to your login page, but lks shared a post you may find helpful regarding login loops in Service Portal. Accessing ServiceNow instance redirect users to session_timeout.do


It is resolved we modified script it is working