GlideJWTAPI - スコープ指定

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:5分
  • GlideJWT API を使用して、ServiceNow AI Platform上の 2 者間の請求を安全に表すための JSON Web トークン (JWT) を作成します。

    この API は sn_auth 名前空間内で提供されます。

    GlideJWTAPI - generateJWT(String jwtProviderSysId, String jsonSerializedHeader, String jsonSerializedPayload)

    JSON Web トークン (JWT) を生成します。

    JWT は、ヘッダー、ペイロード、署名の 3 つの部分で構成されます。

    表 : 1. パラメーター
    名前 タイプ 説明
    jwtProviderSysId 文字列 JWT プロバイダーのSys_id。

    テーブル:JWT プロバイダー [jwt_provider]

    jsonSerializedHeader 文字列 オプション。ペイロードの JSON ヘッダー。

    デフォルト:JWT プロバイダーレコードからの要求を使用します。

    jsonSerializedPayload 文字列 オプション。JSON ペイロード。

    デフォルト:JWT プロバイダーレコードからの要求を使用します。

    表 : 2. 戻り値
    タイプ 説明
    文字列 生成された JWT。

    この例では、JWT プロバイダーレコードからの要求を使用して JWT を生成します。

    var jwtAPI = new sn_auth.GlideJWTAPI();
    
    var jwtProviderSysId = "ce7d1a62a3660210f1565f87f31e61f7";
    var jwt = jwtAPI.generateJWT(jwtProviderSysId, null, null);
    
    gs.info("JWT:" + jwt);

    出力:

    JWT:eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5YzZlMmQxNzU0MzMyMDEwMDFhMTE4Y2FhMGVhMmE0MyIsInN1YiI6ImFkbWluQGV4YW1wbGUuY29tIiwiaXNzIjoiaHR0cHM6Ly9kb21haW4uZXhhbXBsZS5jb20iLCJleHAiOjE3MTc2MDc0MjQsImlhdCI6MTcxNzYwNzM2NCwianRpIjoiMjUzMjRjOWItMzlhMS00ZTc4LWEzNzItMGZjNzA2ZWE2ZDgxIn0.UwfdJzdMNE1zAyOFsaGGKPqatbSgDdYi_LjBwj9KUtKRRLyEDWuS7fErl_6W1_5dvhvtEPPGwBq84FcIjIzdNe17-zTi6tRaVIMfC8PDd2emjlKM1NgyYV1lzGQyDpafl4V0FixqFp1jB-_4XejN2UvWbMT9ylOoPALYGII13R8VabVYdknMOxBO8KMyOefxcAhS2OVFDFfozwMJtgJosPls3bzK1f0_WvGZDEBLdbDobzvrYjqNPIcmYk7pvyJ-ROeaxxj5h4erR4H8gFF_pG8bAxnLnFRMTzp-ZsbALMnC-B331jqj0Pi5gHsfTCNCV-zvGkyQwFwSfLB9uBo1gw

    デコードされた JWT:

    {
      "typ": "JWT",
      "alg": "RS256"
    }
    .
    {
      "aud": "9c6e2d175433201001a118caa0ea2a43",
      "sub": "admin@example.com",
      "iss": "https://domain.example.com",
      "exp": 1717607424,
      "iat": 1717607364,
      "jti": "25324c9b-39a1-4e78-a372-0fc706ea6d81"
    }

    この例では、カスタム要求を使用して JWT を生成します。

    var jwtAPI = new sn_auth.GlideJWTAPI();
    
    var headerJSON = {  "kid": "a1234"  };
    var header = JSON.stringify(headerJSON);
    
    var payloadJSON = { "iss": "override_value_in_JWT_provider_record", "custom_claim_1": "custom_claim_1_value" };
    var payload = JSON.stringify(payloadJSON);
    
    var jwtProviderSysId = "ce7d1a62a3660210f1565f87f31e61f7";
    var jwt = jwtAPI.generateJWT(jwtProviderSysId, header, payload);
    
    gs.info("JWT:" + jwt);

    出力:

    JWT:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExMjM0In0.eyJhdWQiOiI5YzZlMmQxNzU0MzMyMDEwMDFhMTE4Y2FhMGVhMmE0MyIsInN1YiI6ImFkbWluQGV4YW1wbGUuY29tIiwiaXNzIjoib3ZlcnJpZGVfdmFsdWVfaW5fSldUX3Byb3ZpZGVyX3JlY29yZCIsImN1c3RvbV9jbGFpbV8xIjoiY3VzdG9tX2NsYWltXzFfdmFsdWUiLCJleHAiOjE3MTc2MDc4MTksImlhdCI6MTcxNzYwNzc1OSwianRpIjoiNjE3YjMyMjQtYjZmZi00MGZmLTliY2QtNTQ5YTdhNTk4YjkzIn0.Oi6AW0KW8i9yyBgWZnVGDKIqK_GYhIlHMigeNBU141nYXJNhLuk36455TwDKj2z40NMI-nqRaxoVIfo1XQiR7_oXuKnmNSDHQJofedq9sQVFbnQmmPnYNzG-01CVTx4xOm_KdPF_WrWvOqj5nyiqPC7fkjEkVbhXDsygRWcoghRrazFwbmS1ujXbs0sXap99uEexiJfUZ0Ad7bjvQ-T1Wh5Sc4LKZguH-egAze98mxQCiMNQAZLAfSs9qPEnXMe8EjXZnPaz3-wMH4KVUGR_gT49XPWkp4081tX7acE77j_55TvCxVyqAGWIOEqI6hlAO_bQmM35pCvN4NSek_GxbQ

    デコードされた JWT:

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "a1234"
    }
    .
    {
      "aud": "9c6e2d175433201001a118caa0ea2a43",
      "sub": "admin@example.com",
      "iss": "override_value_in_JWT_provider_record",
      "custom_claim_1": "custom_claim_1_value",
      "exp": 1717607819,
      "iat": 1717607759,
      "jti": "617b3224-b6ff-40ff-9bcd-549a7a598b93"
    }