Notifications

35 views

Description

Even if a Portal page has made public and auto redirect IDP has enabled, hitting the Instance URL/portal page will take you to Portal login widget and witin few seconds you will be re-directed to IDP

This is annoying and makes confusion for many end users since they could see the OOB Login widget for few seconds before SSO login page.

Cause

This is occurring because the default Login widget in the portal page is configured with all CSS, HTML, Frames and scripts.

The delay in rendering is the primary culprit. To eradicate the same, you can create a custom Widget and use the widget in a custom login page which can be referred in  the Portal page.

Below are few simple steps that can be followed to create a widget and login page.

Resolution

1.Create a Page for login. 

Navigate to Pages from filter navigator (sp_page) and create a new one. I am putting the title and ID as "Copy-login".

And update the  "Page specific CSS" as follows:

=======

.redDiv {
display: none;
}

.navbar {
display: none;
}

.link {
display: none;
}

.social {
display: none;
}

.flex-column {
display: none;
}

=======

 

 

2. Create a Widget.

 

Navigate to Service Portal > Widgets (sp_widget) and create a new one. I am putting the  Name as "Login SSO"

And update the "Body HTML template" as

=====

<div ng-if="!data.is_logged_in">
${Redirecting to SSO provider}
</div>

=====

Keep CSS empty

 

Update "Server script' as:

======

(function() {
data.is_logged_in = gs.getSession().isLoggedIn();
data.default_idp = GlideProperties.get("glide.authenticate.sso.redirect.idp");

if (!data.is_logged_in) {
var gs_nav_to = gs.getSession().getProperty("nav_to");
gs.getSession().putProperty("nav_to", null);
if (!gs.getSession().getProperty("starting_page"))
gs.getSession().putProperty("starting_page", gs_nav_to);
}

})();

======

 

Update "Client controller" as:

======

function loginCtrl($scope, $window) {

if (!$scope.data.is_logged_in)
$window.location = "/login_with_sso.do?glide_sso_id=" + $scope.data.default_idp;

}

======

 

 

 

 

 

 

3. Now you need to link this widget to the login page. To do so, Open the login page and click on "Open in Page Editor". This will open the editor in a new tab of the browser and you can Edit Copy-login (copy_login) page in Designer .

From here you can link the widget to the login page.

 

 

 

 

4. Finally  Link this new login page to the Portal pages which you created and hit the URL with the Portal suffix which will take you to the IDP/SSO page without showing the local login page of portals

 

Eg: https://<instance>.service-now.com/sp

 

 

5. Done

 

Article Information

Last Updated:2019-12-13 04:19:52
Published:2019-12-13