OAuth JWT Bearer Grant Type 統合セットアップIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } JWT (JSON Web Token) Grant Type は、ユーザーの介入なしで ServiceNow と外部 API プロバイダー間のサーバー間 API 通信を実現します。 手順 JWT 署名キーを含む jks を sys_certificate にアップロードします。署名キー (秘密鍵と公開鍵のペア) を持つ Java キーストアは、お客様によって生成されます。 ターミナルで次のコマンドを使用して、自己署名証明書を持つ Java キーストアを生成します。keytool -genkey -alias snclient -keyalg RSA -validity 365 -keystore jwtdemo.keystore -storepass jwtdemo -keypass jwtdemo JWT 署名キーを作成し、対応する署名 jks を割り当てます必要なクレームを使用して JWT Provider を作成し、JWT Signing Key を割り当てます。API に必要なクレームについてはベンダーに確認することをお勧めします。Application Registry で 3rd party OAuth Provider を作成します。ServiceNow で JWT Provider および Signing Keys を構成します。oauth entity profile レコードを開き、jwt provider を割り当てます。Scripts Background を使用して OAuth Provider をテストします。 var tokenRequest = new sn_auth.GlideOAuthClientRequest();tokenRequest.setGrantType("urn:ietf:params:oauth:grant-type:jwt-bearer");tokenRequest.setRequestor("someone@someemail.com");var oAuthClient = new sn_auth.GlideOAuthClient();var tokenResponse = oAuthClient.requestTokenByRequest("box_demo", tokenRequest);gs.info("Error:" + tokenResponse.getErrorMessage());var token = tokenResponse.getToken(); dumpToken(token);function dumpToken(token) { if(token) { gs.info("AccessToken:" + token.getAccessToken()); gs.info("AccessTokenExpiresIn:" + token.getExpiresIn()); }} Output: Getting JWTProvider for jwtProviderSysId = e4967691dbf92300980c90b6db96190dAuth com.snc.platform.security.oauth.jwt.JWTProvider@1219a82Auth Cache miss, got jwtProvider from GlideRecord and put in cacheGetting JWTProviderConfig for jwtProviderId = e4967691dbf92300980c90b6db96190dAuth Cache hit. Getting JWTProviderConfiguration from cacheStarted to generate JWTAuthAdding payload claims to jwt with name = box_sub_type and value = enterpriseAuthAdding payload claims to jwt with name = aud and value = https://api.box.com/oauth2/tokenAuthAdding payload claims to jwt with name = sub and value = 120961449AuthAdding payload claims to jwt with name = iss and value = o9xqbay28g97deumamwz2s0tvtsfrusbAuthAdding claims to jwt. Header Claims = [], keyId = , issuedAt = Thu Nov 15 14:36:21 PST 2018, expiresAt = Thu Nov 15 14:37:21 PST 2018, issuer = o9xqbay28g97deumamwz2s0tvtsfrusb, notBefore = null, signingAlgorithms=RS256, jwtId=4370d0df-a37e-4c31-a667-308acb6ac9ceSuccessfully generated JWTOAUTH - OAuthHTTPRequest : Sending http request, url:https://api.box.com/oauth2/tokenOAUTH - OAuthHTTPRequest : Sending http request, body:grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJodHRwczovL2FwaS5ib3guY29tL29hdXRoMi90b2tlbiIsInN1YiI6IjEyMDk2MTQ0OSIsImJveF9zdWJfdHlwZSI6ImVudGVycHJpc2UiLCJpc3MiOiJvOXhxYmF5MjhnOTdkZXVtYW13ejJzMHR2dHNmcnVzYiIsImV4cCI6MTU0MjMyMTQ0MSwiaWF0IjoxNTQyMzIxMzgxLCJqdGkiOiI0MzcwZDBkZi1hMzdlLTRjMzEtYTY2Ny0zMDhhY2I2YWM5Y2UifQ.G_D4Xbmiml7D2n2pmApXq04npyqhwJ2i78SJeg45k5f1fBBhw4oIjeHH5-En2lawByEuRWjopViM25zXs57E-4DnDzTkJvJnWiHG0oKQdZlcf9EcfWUS2z7tfIvSmI1m_JiepQoQQXWR9eVrwnR0y_-n_K6Qt3C1CUIpY3X7t23gyDEn1D2XVs-WDo_1GZ29YQnVxzQOmcPQafN5oQ8st7dJkv21o71elWU0-pn_34rbx_uJvc80uC-t8PZtNbvuFNYpXNFbu0AC5_QcJ5ZlQFwwO7RofiOSRi25Uq0SoJ_JsfBtlas3iBMFbmDd0i81g4C9ljEOrnF1dhn3ttdQ4A&client_secret=DRcW5sBRcuy4jDqryIoPB5BhCw7h1QzL&client_id=o9xqbay28g97deumamwz2s0tvtsfrusbSecurityUtils: Obfuscating Key : access_token and all its children!OAUTH - OAuthHTTPRequest : Received http response: {"access_token":"********","token_type":"bearer","expires_in":3899,"restricted_to":[]}*** Script: Error:null*** Script: AccessToken:1xyzIxLg8JhFroarvBVCa4XgghdbZ5Eo*** Script: AccessTokenExpiresIn:3899*** Script: RefreshToken:null Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Madrid Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } OAuth 2.0 クライアント認証および認可付与のための JSON Web Token (JWT) プロファイル: https://tools.ietf.org/html/rfc7523OAuth 2.0 JWT Bearer Grant Flow - JWT ベアラー権限許可フローを理解するには、以下の記事を使用してください。 https://help.salesforce.com/articleView?id=remoteaccess_oauth_jwt_flow.htm&type=5https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow