Translated message

A translation of this page exists in English.

Red Hat API のスタートガイド

更新 -

Red Hat のサービス用の API の使用

Red Hat のサービス用の API を使用すると、次のことをより効果的に追跡および自動化できます。
* サブスクリプションおよびエンタイトルメント
* ユーザーアカウントおよび権限

前提条件

Red Hat API は認可に OAuth 2.0 を使用します。トークンを取得し、API にアクセスするには、以下の情報が必要になります。

  • API トークンのページ で生成されたオフライントークン (ユーザーに View/Renew Subscription Information の権限が必要)
  • クライアント ID = rhsm-api
  • トークン URL = https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token
  • JSON オブジェクトを処理するための jq のインストール
    • jq は、コマンドラインの JSON プロセッサーで、yum コマンド sudo yum install jq を使用してインストールできます。

新しいオフライントークンの生成

オフライントークンは、30 日に 1 度以上使用し、アクセストークンの作成に使用する限り、期限切れになることはありません。これはパスワードとして機能し、新しい更新トークンを作成せずに引き続きアカウントを認証できます。

警告:ネットワークのベストプラクティスに一貫性のあるパスワード管理を使用してください。パスワードや認証情報をプレーンテキストに保存するのは危険です。オフライントークンには、パスワードを不正使用から保護するセキュリティー対策を同じように適用します。

オフライントークンを生成するには、API トークンのページ に移動し、Generate Token ボタンをクリックします。

アクセストークンの生成

オフライントークンを作成したら、そのトークンを使用して新しい更新トークンを作成できます。これには 15 分間有効なアクセストークンが含まれます。アクセストークンは、カスタマーポータルのユーザーを認証するためにヘッダーで渡されます。

警告:ネットワークのベストプラクティスに一貫性のあるパスワード管理を使用してください。パスワードや認証情報をプレーンテキストに保存するのは危険です。

Set the offline token value (in this example, we set it in plaintext and shorten the token value for clarity)
# offline_token='eyJhbGciOiJSUzI1NiIsInR5cCIgOiA'

# curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id=rhsm-api -d refresh_token=$offline_token

以下のような出力が表示されるはずです。access_token は、承認トークンとして使用されるトークンになります。

{"access_token":"oiZjo1MjhkNzZmZi1mNzA4LTQzZWQtOGNkNS1mZTE2ZjRmZTBjZTY6cmhuLXN1cHBvcnQta3RvcmRldXIiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJyaHNtLWFwaSIsImF1dGhfdGltZSI6MTU2NzQwODU5Nywic2Vzc2lvbl9zdGF0ZSI6ImYwZGJiOGQ0LTRlNGUtNDY1NC04NDRjLTZmMzcwNGM4NDQyMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOltdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsicG9ydGFsX21hbmFnZV9zdWJzY3JpcHRpb25zIiwib2ZmbGluZV9hY2Nlc3MiLCJjYW5kbGVwaW5fc3lzdGVtX2FjY2Vzc192aWV3X2VkaXRfYWxsIiwiYWRtaW46b3JnOmFsbCIsInBvcnRhbF9tYW5hZ2VfY2FzZXMiLCJwb3J0YWxfc3lzdGVtX21hbmFnZW1lbnQiLCJwb3J0YWxfZG93bmxvYWQiXX0sInJlc291cmNlX2FjY2VzcyI6e30sImFjY291bnRfaWQiOiIxOTc5NzEwIiwibmFtZSI6Iktlbm55IFRvcmRldXJzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoicmhuLXN1cHBvcnQta3RvcmRldXIiLCJnaXZlbl9uYW1lIjoiS2VubnkiLCJmYW1pbHlfbmFtZSI6IlRvcmRldXJzIiwiZW1haWwiOiJrdG9yZGV1ckByZWRoYXQuY29tIn0.JfStOgLvgFUAlMb7aVfm-dWxd4wN5oqk377Q6oyDe55pM4zDiZ0f1yJfHsWL8RHeb3r0tj8DY_UAyAFkxAnjyWjq52d7h2EfJUPOs1p1P8Yeu5hDwOrA34Es2maN-ZbJCc4sOb7stGhxSCU15CfvPFIRR5tgSQ17-Mx-x4ZnK_fwpOK6DqQpNzZ0Krz3U1a-NH86XJ8dT8lC3o03YrdlcZx_-wv6-PehqNQa2Hb9vt1csX8QlL3PEyBVNPZXaaTHvyFYx0orGyjKA83Qq-LihbWBXzNjf_rIEfsPJYi-uQHIT_zjaOPYo2rXi7VTPJC2qRSxF2yaRGlihZHxkDzMOTITnaDeMhbx1zvRr-R9eXocEUzsU9j-Yx7h3WYCFjb8zdfXTBHV8SCaMdH1u9Eesa5gmHOoki8882RR85i1fjpBayFTS36y4S-yDebUYiukXOnw8mMMKy04NhVpFGfWtJ8--Jy4Ypndqqk_OS_PiWBsFFN6lMv5S6DZWVpjjE-CENHKn9ceA4MlerBBXLY02Xz9h0biiQUZrd-NLy11j4os124Mai1mmlNOLz993hw0gl-vKKno_bYOV8dEEmKtSLlSPVdW5X_0vBU0BtQuSEVctz_8zsRKHpT-YlDdmP0VDuzJjWM0YsGz2W0_tMuLG7NYS_Ia3vWAVuK--Uv5cAQ","expires_in":900,"refresh_expires_in":0,"refresh_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICItNGVsY19WZE5fV3NPVVlmMkc0UXhyOEdjd0l4X0t0WFVDaXRhdExLbEx3In0.eyJqdGkiOiJhODZlZDczZS00MmE1LTQzYjUtYjJkYS1iMWM5NzU3OWUyZWMiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNTY3NDEwMDIxLCJpc3MiOiJodHRwczovL3Nzby5yZWRoYXQuY29tL2F1dGgvcmVhbG1zL3JlZGhhdC1leHRlcm5hbCIsImF1ZCI6InJoc20tYXBpIiwic3ViIjoiZjo1MjhkNzZmZi1mNzA4LTQzZWQtOGNkNS1mZTE2ZjRmZTBjZTY6cmhuLXN1cHBvcnQta3RvcmRldXIiLCJ0eXAiOiJPZmZsaW5lIiwiYXpwIjoicmhzbS1hcGkiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiJmMGRiYjhkNC00ZTRlLTQ2NTQtODQ0Yy02ZjM3MDRjODQ0MjIiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsicG9ydGFsX21hbmFnZV9zdWJzY3JpcHRpb25zIiwib2ZmbGluZV9hY2Nlc3MiLCJjYW5kbGVwaW5fc3lzdGVtX2FjY2Vzc192aWV3X2VkaXRfYWxsIiwiYWRtaW46b3JnOmFsbCIsInBvcnRhbF9tYW5hZ2VfY2FzZXMiLCJwb3J0YWxfc3lzdGVtX21hbmFnZW1lbnQiLCJwb3J0YWxfZG93bmxvYWQiXX0sInJlc291cmNlX2FjY2VzcyI6e319.S_pmAWzQUc04f0uGHN9rRYd4sH1t4IPnEwCcOH1aBL9Qo4_EbXPWCrtnf84f1pfuKJTQwUS-DldY6eloyVEsGgnqkygBKh270bu_bNXCNAuLJigEMsYx_2VzdnwWLptWS2_FUaNwe7Tai8qXwd8F0ge0Zjoi3P15S_8z4Tp79uD-qKcvwz6NlPKCOZwEbwZqOkJDZ8JKTIK8O0jfqdtHMfaWwlXMXdvx3B70tTOtHjQGAsxZA2dPPvqVGuyMOMmC3bMaISReUbtDwsCV-eAZplDfDZthr4k4JbmG9Iwq1aATaF3aCwfpebcmoIZGHE4_RLZrXCZKapXVVvRxcOrJytxIZrbDHq6ozX7j-j1SE3kuexcSLvlodmfTlxwPX9g7aqJu2ZLno54NxQSgYO8lQqSvScFgLtbX5f_FUS0Iw6yRWWJy2o2fnvfGk83rt5UYTtIb8Xd1GXcpHf8Yl10nVy21BetSQY__VpahF_eZghBNxS689GJnwUqAwlu01pOlb26mmHaydHc3hqUsudZydRbaFfI7nR6gQP8lCtp6b0z5hgVHLG4ZJ7i4MmEL6C5G4xHUaUs6RZgJUSsc2DzLW0b7rSQj41JuvTmSgD8bMrnVokmkAbfvxjKGc7E8n2GyImO7JiKb3RA7_o0xOTRYDIa_Ns-lnigJkUlQZUzt7JI","token_type":"bearer","not-before-policy":0,"session_state":"f0dbb8d4-4e4e-4654-844c-6f3704c84422","scope":"offline_access"}%    

access_token は、API 呼び出しを実行するために承認トークンとして設定および使用される必要があるトークンになります。

# token=$(curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id=rhsm-api -d refresh_token=$offline_token | jq --raw-output .access_token)

トークンによる API 呼び出しの実行

100 個のシステムをリストする API 呼び出しの例は次のとおりです。

# curl -H "Authorization: Bearer $token"  "https://api.access.redhat.com/management/v1/systems?limit=100"

任意の CLI ツールサポート

jq やオプションで json_reformat などの JSON フォーマットツールをインストールして、より構造が明確な API 呼び出しの返答を受け取ります。

  • json_reformat は、Red Hat Enterprise Linux に標準装備されるコマンドライン JSON フォーマッターです。

OAuth 2.0 をサポートする 標準の OIDC ライブラリー について詳しい開発者は、これらのライブラリーを使用して Red Hat Subscription Management API からスクリプトおよびアプリケーションへの承認をビルドできます。

API のテストや、API にアクセスする頻度が低いユーザーには、オプションとして REST クライアントを使用できます。REST クライアントが OAuth 2.0 またはカスタムフォームの提出をサポートする場合は、その REST クライアントを使用して API にアクセスできます。一般的な REST クライアントの例としては、Postman、Advanced REST Client、Restlet などが挙げられます。

利用可能な Red Hat API へのアクセス

Red Hat は仕様を記述するための Swagger ファイルを提供しています。Swagger の仕様には、利用可能な API エンドポイントに関する情報、入力パラメーター、想定される出力、考えられるエラー応答などが含まれます。Swagger ファイルは、Postman や RESTlet と同様に REST クライアントにインポートでき、API 呼び出しのライブラリーを自動的にビルドします。Red Hat API Swagger のドキュメントは、この記事の最後にリンクが記載されている Red Hat API トークンと Swagger ドキュメントのページにあります。

Red Hat へのお問い合わせ

問題が発生し、サポートが必要な場合は、サポートケースを作成 してください。

ダウンロード用リソースおよび Swagger ドキュメント

トラブルシューティング

  1. https://access.redhat.com/management/api から offline_token を取得します。

  2. オフライントークンを設定します。

# offline_token='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
* Verify it's set:

        # echo $offline_token
  1. アクセストークンを取得します。

    # curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id=rhsm-api -d refresh_token=$offline_token
    
  2. 作成した関数でアクセストークンを取得します。

     # token=$(curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id=rhsm-api -d refresh_token=$offline_token | jq --raw-output .access_token)
    
    • access_token の設定を検証します。

      # echo $token
      
  3. API 呼び出しを実行します。

    # curl -H "Authorization: Bearer $token"  "https://api.access.redhat.com/management/v1/systems?limit=100"
    

Comments