2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ServiceNow】ログイン直後に一度だけ特定URLにリダイレクトする

Last updated at Posted at 2022-06-01

概要

Version: San Diego

ServiceNowへのログイン直後に一度だけ特定URLにリダイレクトする設定方法を説明します。
設定手順は大まかに以下です。

  1. System Properties(glide.entry.first.page.script)の作成
  2. Script Include(SPEntryPage)の編集

補足

公式ドキュメント1やQiita記事2の記載内容では確かにログイン直後に特定URLにリダイレクトしてくれますが、それ以外のServiceNow操作時に意図しない画面表示となる場合があります。
(ServiceNowのPlatformUIを開こうとすると意図しない画面にリダイレクトされてしまう、など)

こういった挙動になってしまうことはKBでも紹介されています34

これを避けるため、本記事ではSPEntryPageにて初回セッションのみgetFirstPageURLを実行する、という処理を追記しています。

[手順1] System Properties(glide.entry.first.page.script)の作成

※本手順は公式ドキュメント1にて紹介されているものと同一です。
(1-1)以下のようにSystem Propertiesを新規作成します

  • Name: glide.entry.first.page.script
  • Type: String
  • Value: new SPEntryPage().getFirstPageURL()

[手順2] Script Include(SPEntryPage)の編集

(2-1) Script Includeの「SPEntryPage」を開きます
(2-2) 22行目あたりを編集し、ログイン直後にリダイレクトさせたいURLを指定します

SPEntryPage
	initialize: function() {
		this.logVariables = false;  // for debugging 
		this.portal = "/sp/";  //<- ココ    // The URL suffix specified in the sp_portal record
	},

(2-3) 69-70行目あたりを編集し、本スクリプトを適用 させない ユーザーの条件を指定します
※デフォルトではログイン試行ユーザーがロールを持っている場合に適用 させない 設定になっています

SPEntryPage
getFirstPageURL: function() {
	......
	if (user.hasRoles() && !redirectURL && !isServicePortalURL) //<- ココ
		return;
	......

(2-4) 63行目あたりと112行目あたりを編集し、本スクリプトが初回セッションのみ実行されるようにします
※セッションに含まれる「firstlogin」がnullの場合だけ本スクリプトを実行する処理を追記しています
※「firstlogin」とfirstloginの中に入れる値はなんでも大丈夫です

SPEntryPage
getFirstPageURL: function() {
		
	var session = gs.getSession();
	this.logProperties('before', session);
		
	var f = session.getClientData('firstlogin');  //<- 63行目あたりにコレを追記
		
	if(f==null){  //<- 63行目あたりにコレを追記
		var nt = session.getProperty("nav_to");
		var isServicePortalURL = new GlideSPScriptable().isServicePortalURL(nt);
		var redirectURL = session.getProperty("login_redirect");

		......
		......

		if (!this.logVariables) {
			gs.log('redirectURL: ' + redirectURL);
			gs.log('User: ' + user.getName());
			gs.log('is internal: ' + (!user.hasRoles()));
			gs.log('returnUrl: ' + returnUrl);
		}
		session.putClientData('firstlogin', 'done');  //<- 112行目あたりにコレを追記
		return returnUrl;
	}else{             //<- 112行目あたりにコレを追記
		return;  //<- 112行目あたりにコレを追記
	}                      //<- 112行目あたりにコレを追記
},

参考文献

  1. Single sign-on, logins, and URL redirects 2

  2. ServiceNowでログイン直後に特定のURLにRedirectする - Qiita

  3. How to configure redirection for Service Portal - Support and Troubleshooting - Now Support Portal

  4. Frequently Asked Questions on redirection with service portal - Support and Troubleshooting - Now Support Portal

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?