3.4. OAuth 認証の概要

Basic 認証の代わりに、制限のある OAuth 1.0 認証をサポートしています。これは、プロトコルのバージョン 1.0a の 1-legged OAuth と呼ばれることもあります。

OAuth の設定を確認するには、Satellite Web UI で 管理 > 設定 > 認証 に移動します。OAuth コンシューマーキー は全 OAuth クライアントが使用するトークンです。

Satellite は、OAuth 設定を /etc/foreman/settings.yaml ファイルに保存します。Satellite はアップグレード時にこのファイルへの手動の変更を上書きするので、これらの設定を行うには、satellite-installer スクリプトを使用します。

3.4.1. OAuth の認証

OAuth 設定を変更するには、必要なオプションを指定して satellite-installer を入力します。以下のコマンドを入力して、OAuth 関連のインストーラーオプションすべてを表示します。

# satellite-installer --full-help | grep oauth

OAuth のマッピングの有効化

デフォルトでは、Satellite は、ビルトインの匿名 API 管理者アカウントで、全 OAuth API 要求を認可します。そのため、API 応答には全 Satellite データが含まれます。ただし、要求を行う Foreman ユーザーを指定して、そのユーザーに対するデータへのアクセスを制限することも可能です。

OAuth ユーザーマッピングを有効にするには、以下のコマンドを入力します。

# satellite-installer --foreman-oauth-map-users true
重要

Satellite は OAuth 要求のヘッダーを署名しません。有効なコンシューマーキーのあるユーザーなら誰でも、Foreman ユーザーになりすますことができます。

3.4.2. OAuth 要求の形式

全 OAuth API 要求には、以下の形式で、既存の Foreman ユーザーのログインを指定した FOREMAN-USER ヘッダーと、Authorization ヘッダーが必要です。

--header 'FOREMAN-USER: sat_username' \
--header 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=timestamp,oauth_signature=signature'
重要

OAuth クライアントライブラリーを使用して、全 OAuth パラメーターを構築します。Python モジュール request_oauthlib を使用する例については、Red Hat ナレッジベースの How to execute an API call using the OAuth authentication method via python script in Red Hat Satellite 6? を参照してください。

以下の例では、認証に OAuth を使用したアーキテクチャーが表示されます。この要求では、FOREMAN-USER ヘッダーに sat_username ユーザー名を使用します。--foreman-oauth-map-userstrue に設定すると、要求には、そのユーザーに対して表示権限が割り当てられたアーキテクチャーのみが含まれます。署名は、全パラメーター、HTTP メソッドおよび URI 変更を反映します。

要求例:

$ curl 'https://satellite.example.com/api/architectures' \
--header 'Content-Type: application/json' \
--header 'Accept:application/json' \
--header 'FOREMAN-USER: sat_username' \
--header 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='