ダイジェストトークン認証の連携Issue ダイジェストトークン認証では、データ、キー、MAC アルゴリズムを使用してダイジェストデータを生成します。あるユーザーがダイジェストデータを使用してインスタンスにアクセスしました。このダイジェストデータは、インスタンス内で計算されたダイジェストデータと比較されます。ダイジェストデータが一致すると、ユーザーは認証されます。 ダイジェストトークン認証はどのように機能するか ユーザーはダイジェストトークンを使用してインスタンス URL にアクセスします。 例:https://<instance-name>.service-now.com?glide_sso_id=9bd23f131b121100227e5581be0713d7&SM_USER=admin&DE_USER=SuaGUdiqQZikiOfxcgQZALaQJpE=** デフォルトまたはリダイレクト IdP が構成されていない場合は、glide_sso_id が必要です。 MultiSSO ダイジェストトークン認証では、MultiSSO_DigestToken インストレーションイグジットを使用して、要求パラメーター、Cookie、またはヘッダーを解析します。Now Platform は、プラットフォーム内で構成されたダイジェストトークン構成に基づいてダイジェスト値を計算します。MultiSSO_DigestToken インストレーションイグジットは、ダイジェストデータを、要求パラメーターから抽出されたダイジェストデータ (DE_USER) と比較します。ダイジェストデータが一致する場合 MultiSSO_DigestToken スクリプトは、ユーザー テーブルに対してユーザー (SM_USER) を検証します。有効なユーザーレコードがある場合、そのユーザーに対するセッションが初期化されます。それ以外の場合、ユーザーは「SSO リダイレクトに失敗しました」ページにリダイレクトされます。 それ以外の場合、ユーザーは「SSO リダイレクトに失敗しました」ページにリダイレクトされます。 連携のセットアップ [マルチプロバイダー SSO] > [ID プロバイダー] > [新規] > [作成しようとしている SSO の種類 (What kind of SSO are you trying to create?)] に移動します。([ダイジェスト] を選択します。) 名前 説明 DE_USER ダイジェストトークンは DE_USER とともに送信されます。 SM_USER ユーザーテーブルでルックアップするためのユーザーフィールド ユーザーフィールド ユーザーテーブルでクエリされるフィールドの名前 秘密のパスフレーズ ダイジェストデータを暗号化/復号化するための秘密キー (例:12345) シングルサインオンスクリプト [MultiSSO_DigestedToken] を選択します。このスクリプトは、トークンを復号化してユーザーを認証します。 SSO リダイレクトに失敗しました ユーザーがログイン失敗後にリダイレクトされるページ 外部のログアウトのリダイレクト ユーザーがログアウト後にリダイレクトされるページ [マルチプロバイダー SSO] > [プロパティ] > [マルチプロバイダー SSO を有効化] サポートされているアルゴリズム Now Platform は、デフォルトで HmacSHA1 アルゴリズムを使用してダイジェストトークンを生成します。HMAC アルゴリズムを変更する必要がある場合は、以下の手順を使用してください。 MultiSSO_DigestedToken インストレーションイグジットを開きます。Java でサポートされている MAC アルゴリズムで MAC_ALG var を更新します。Java 8 プラットフォームでは、以下の MAC アルゴリズムがサポートされています。 HmacMD5HmacSHA1HmacSHA224HmacSHA256HmacSHA384HmacSHA512 スクリプティングでダイジェストデータを生成する方法 [システム定義] > [スクリプトバックグラウンド] でこのスクリプトを実行し、さまざまな MAC アルゴリズムでダイジェストデータを生成します。 generateDigestData();function generateDigestData(){//SM_USERvar data="admin";//秘密のパスフレーズvar secretKey = "12345";var MAC_ALG_1 = "HmacSHA1";var MAC_ALG_2 = "HmacSHA224";var MAC_ALG_3 = "HmacSHA256";var MAC_ALG_4 = "HmacSHA384";var MAC_ALG_5 = "HmacSHA512";var MAC_ALG_6 = "HmacMD5";//SncAuthentication.encode() 関数はダイジェストデータを生成します。これは DE_USER と比較されます。gs.print("HmacSHA1 で生成されたダイジェストデータ:"+SncAuthentication.encode(data, secretKey, MAC_ALG_1));gs.print("HmacSHA224 で生成されたダイジェストデータ:"+SncAuthentication.encode(data, secretKey, MAC_ALG_2));gs.print("HmacSHA256 で生成されたダイジェストデータ:"+SncAuthentication.encode(data, secretKey, MAC_ALG_3));gs.print("HmacSHA384 で生成されたダイジェストデータ:"+SncAuthentication.encode(data, secretKey, MAC_ALG_4));gs.print("HmacSHA512 で生成されたダイジェストデータ:"+SncAuthentication.encode(data, secretKey, MAC_ALG_5));gs.print("HmacMD5 で生成されたダイジェストデータ:"+SncAuthentication.encode(data, secretKey, MAC_ALG_6));} 出力 *** スクリプト:HmacSHA1 で生成されたダイジェストデータ:SuaGUdiqQZikiOfxcgQZALaQJpE=*** スクリプト:HmacSHA224 で生成されたダイジェストデータ:HcTdLXVPwfK+3MRsI1m9BN10xYXKGTqzWYmGMg==*** スクリプト:HmacSHA256 で生成されたダイジェストデータ:IMafPR3HHBl+ykp7ACAfQqMffxtCI86Qv1oI8dqQJr0=*** スクリプト:HmacSHA384 で生成されたダイジェストデータ:3atp1KaQgbr7W+/Wr9Lq7/K+/OTGk1X5YkhF+d+DwiGpI2rSFBP7cC1FN3fDlhLR*** スクリプト:HmacSHA512 で生成されたダイジェストデータ:c22+q9VaE720r4uWo19Ot9VTRQXQc1oXKHi3mnWB6G/A6gjDG55DXw6fg8JizH/Z5reovgW1oat8 eZTcqxyKcg==*** スクリプト:HmacMD5 で生成されたダイジェストデータ:8ETw8Cm8Az6JOuWzotRYZA== ディープリンク Now Platform は、ダイジェストトークン認証のディープリンクをサポートしています。認証のため、ディープリンク URL に glide_sso_id、SM_USER、および DE_USER を含めます。 https://<instance-name>.service-now.com/nav_to.do?uri=incident.do?sys_id=9d385017c611228701d22104cc95c371&glide_sso_id=9bd23f131b121100227e5581be0713d7&SM_USER=itil&DE_USER=UjHopjjPczCNpN2xcCXl7kQty4= システムログ glide.authenticate.multisso.debug = true を設定すると、デバッガメッセージが次に出力されます:システムログ ログイン成功 ログイン失敗 Service Portal と CMS のリダイレクト Now Platform は、CMS と Service Portal のダイジェストトークン認証をサポートしていません。これは、CMS と Service Portal にログインページが構成されていることで、ユーザーはプラットフォームに構成されたログインページにリダイレクトされるためです。navpage.do は、認証用のダイジェストトークンをサポートする唯一の公開ページプラットフォームです。 ワークアラウンド 1: sys_public テーブルにおいて、Service Portal では $sp が true に設定され、CMS では view_content が true に設定されています。$sp = false および view_content = false に設定すると、プラットフォームでダイジェストトークン認証を使用してユーザーを認証できます。このアプローチでは、ユーザーは Service Portal および CMS 用に構成された公開ページにアクセスすることはできません。 ワークアラウンド 2: 次の最初のページを構成します:CMS と Service Portalログインリダイレクトを構成します (シングルサインオン、ログイン、および URL リダイレクトを参照)。Service PortalCMSログインシナリオの定義を参照インスタンス URL で認証します。プラットフォームは、認証後にユーザーを最初のページ (ランディングページ) にリダイレクトします。 ****アドミンユーザー: ログイン URL https://<instance-name>.service-now.com?glide_sso_id=9bd23f131b121100227e5581be0713d7&SM_USER=admin&DE_USER=SuaGUdiqQZikiOfxcgQZALaQJpE= ユーザーは認証後に navpage.do にリダイレクトされます。 *****ESS ユーザー: ログイン URL https://<instance-name>.service-now.com?glide_sso_id=9bd23f131b121100227e5581be0713d7&SM_USER=ess&DE_USER=er/ve0+vrkJxXlgA3dvjOn306PQ= ユーザーは認証後に Service Portal (最初のページ/ランディングページ) にリダイレクトされます。 ***アドミンユーザー ログイン URL https://<instance-name>.service-now.com/nav_to.do?uri=incident.do?sys_id=9d385017c611228701d22104cc95c371&glide_sso_id=9bd23f131b121100227e5581be0713d7&SM_USER=admin&DE_USER=SuaGUdiqQZikiOfxcgQZALaQJpE= ユーザーは認証後にインシデントレコードにリダイレクトされます。 *** ESS ユーザー https://<instance-name>.service-now.com/nav_to.do?uri=incident.do?sys_id=d297357ddb1ba300dca1f6dc0c96198a&glide_sso_id=9bd23f131b121100227e5581be0713d7&SM_USER=ess&DE_USER=er/ve0+vrkJxXlgA3dvjOn306PQ= ESS ユーザーは認証後に Service Portal にリダイレクトされます。 Release該当するバージョンについては、以下のドキュメントを参照してください。https://docs.servicenow.com/search?q=Digest+token+authenticationRelated Links連携のセットアップ、ダイジェストトークンの実装例、インスタンス内のディープリンクに関するドキュメントをご確認ください。 https://docs.servicenow.com/search?q=Digest+token+authenticationhttps://docs.servicenow.com/search?q=Create+links+for+digest+authentication この記事の執筆時点で Java 8 がサポートする MAC アルゴリズム。 https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Machttps://docs.oracle.com/javase/8/docs/api/javax/crypto/Mac.html