公開鍵を使用した JWT 発行者シークレットの作成

オプションで、 skipAuthentication パラメーターを使用して認証層をスキップするように OMS Gateway を構成することもできます。 このセクションは、JSON Web トークン検証を使用して認証を有効にする予定であり、 skipAuthenticationfalseに構成されている場合にのみ適用されます。

skipAuthenticationfalseの場合、 OMS Gateway では、JWT 発行者を <issuers_config>で構成する必要があります。 これは、発行者とその公開鍵を使用して、着信 API 呼び出しのトークンを検証します。 このサービスでは、検証のために公開鍵 (秘密鍵ではなく) のみを構成する必要があります。 openssl などのツールを使用して、公開鍵と秘密鍵のペアを PEM 形式で生成できます。

始める前に

サポートされているいずれかのアルゴリズム ( RS256、 RS384、 RS512) で生成された公開鍵と秘密鍵のペアの公開鍵が必要です。 公開鍵と秘密鍵のペアの作成について詳しくは、 ステップ 1-公開鍵と秘密鍵のペアの作成を参照してください。

このタスクについて

IBM® Sterling Order Management System Software またはその他の外部システムが IBM Sterling Intelligent Promisingと通信するたびに、これらのアプリケーションから発信される呼び出しは OMS ゲートウェイを介して認証される必要があります。 そのため、OMS ゲートウェイで外部アプリケーションを JWT 発行者として構成する必要があります。 OMS ゲートウェイについて詳しくは、 IBM OMS ゲートウェイ・オペレーターの概要を参照してください。

手順

  1. 以下のステップを実行して、公開鍵と秘密鍵のペアを作成します。
    1. OpenSSL を使用して秘密鍵を作成します。ここで、 < user> は鍵 ID の名前です。
      openssl genrsa -out <user>Private.pem
    2. 公開鍵を作成します。
      openssl rsa -in <user>Private.pem -pubout -out <user>Pub.pem
      
    3. 鍵が作成されたことを確認するために、鍵をリストして鍵を表示します。
      ls -l
  2. 以下のコマンドを実行して、JSON スキーマ jwt-issuer-config.json を作成し、JWT シークレットを作成します。
    Red Hat® OpenShift® Container Platformの場合:
    oc create secret generic <JWT_Secret_name> --from-file=jwt-issuer-config.json=<Path_to_file>\jwt-issuer-config.json -n <sip_installation_namespace>
    Kubernetesの場合:
    kubectl create secret generic <JWT_Secret_name> --from-file=jwt-issuer-config.json=<Path_to_file>\jwt-issuer-config.json -n <sip_installation_namespace>
    以下の例は、 jwt-issuer-config.jsonのスキーマです。
    {
       "jwtConfiguration":[
          {
             "iss":"oms",
             "serviceRoles": ["BUSINESS"],
             "keys":[
                {
                   "jwtAlgo":"RS256",
                   "publicKey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAri9QNusRxGP6KN20UUpV\nFJlWerDa1nLg9gyRrbJk9R1n6Uqws7rtXplkGRk9CMPCU/tj7dMQuMcgzXOCIE2Q\nSPjYnn/xnvtdKqqnh9JGJyl9nZ0ApesUZ23ab0Kv7E6fkiOCs/+KhM90oYK6xSno\ntjCtl+3lGOJwcNjhFFG/5Yk1J4lS5Nhsy27O8ju/uPa8/szH1QLyIeop/kYNARXw\nzHsYsNoSfp4zGVIEg5LPuKZcO+oC6hNmg+57cRN5ThYf8rpuyiOU1tbqiqg+ZtPa\nP2aKks13A/MSZyaIqp25d21MMTE0cQzX34weoqNPz+18b4sxHTMmYWcOIq69k/Ul\nywIDAQAB\n-----END PUBLIC KEY-----",
                   "kid":"kid-value"
                }
             ]
          }
       ]
    }
  3. 表 1 にリストされている JWT プロパティーを確認し、JSON スキーマを構成します。
  4. OMS ゲートウェイ・サービス環境のシークレットの名前を指定します。
    表 1. JWT プロパティー
    プロパティー 必須 説明
    ISS はい 発行者構成で構成されているトークン発行者名を指定します。 これは、トークンを発行した任意の外部アプリケーションにすることができます。 例えば、 IBM Sterling Order Management System Software がトークンを発行している場合は、 iss=omsとなります。
    serviceRoles いいえ ビジネス内の職務の特性に基づいて API にアクセスするための役割を指定します。 serviceRole に使用できるオプションは、BUSINESS、OPERATIONS、および ADMINISTRATION です。 serviceRole が定義されていない場合、システムは妥当性検査を強制せず、すべての API へのアクセスを許可します。

    サービス役割について詳しくは、 API にアクセスするための役割ベースのアクセス権限を参照してください。

    キー はい 発行者からの着信要求からの JSON Web トークンを検証する公開鍵を指定します。 1 つの発行者に対して複数の鍵を構成できます。
    jwtAlgo はい JWT 発行者で鍵を生成するためのアルゴリズムを指定します。 サポートされるアルゴリズムは、 RS256、 RS384、 RS512です。
    publicKey はい JWT 発行者の公開鍵を PEM 形式で指定します。 公開鍵が -----BEGIN PUBLIC KEY---— で始まり、 -----END PUBLIC KEY----- で終わること、および改行が '¥ n' で置き換えられていることを確認します。
    KID いいえ jwtConfiguration での KID の指定はオプションであり、通常は、トークンを検証するために複数の鍵があり、署名を検証するために正しい鍵を検索する必要がある場合に役立ちます。

    外部アプリケーション (発行者) から発信される JWT トークンには、KID が含まれる場合と含まれない場合があります。 トークンに KID が含まれている場合、 jwtConfiguration 内の対応する公開鍵エントリーが検証の対象となります。

    重要:

    予期されるクレーム: OMS ゲートウェイ・アプリケーションは、トークン検証プロセスで iss (発行者名) クレームと exp (有効期限) クレームを予期します。

    注: JWTシークレットを追加または変更するたびに、OMS Gatewayのポッドが自動的に再起動されます。