4.4. OAuth 認証の概要
Basic 認証の代わりに、制限のある OAuth 1.0 認証をサポートしています。これは 1-legged OAuth と呼ばれることもあります。
OAuth の設定を確認するには、Satellite Web UI で Administer > Settings > Authentication に移動します。OAuth コンシューマーキー は全 OAuth クライアントが使用するトークンです。
Satellite は、OAuth 設定を /etc/foreman/settings.yaml
ファイルに保存します。これらの設定を指定するには、satellite-installer
スクリプトを使用します。
4.4.1. OAuth の認証
satellite-installer
を使用して、Satellite Server の OAuth 設定を変更します。以下のコマンドを入力して、OAuth 関連のインストーラーオプションすべてを表示します。
# satellite-installer --full-help | grep oauth
OAuth ユーザーマッピングの有効化
デフォルトでは、Satellite は、ビルトインの匿名 API 管理者アカウントで、全 OAuth API 要求を認可します。そのため、API 応答には全 Satellite データが含まれます。ただし、要求を行う Satellite ユーザーを指定して、そのユーザーに対するデータへのアクセスを制限することも可能です。
OAuth ユーザーマッピングを有効にするには、以下のコマンドを入力します。
# satellite-installer --foreman-oauth-map-users true
Satellite は OAuth 要求のヘッダーを署名しません。有効なコンシューマーキーを持つユーザーは誰でも、任意の Satellite ユーザーになりすますことができます。
4.4.2. OAuth 要求の形式
全 OAuth API 要求には、以下の形式で、既存の Satellite ユーザーのログインを指定した FOREMAN-USER
ヘッダーと、Authorization
ヘッダーが必要です。
--header 'FOREMAN-USER: My_User_Name' \ --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
ヘッダーに My_User_Name ユーザー名を使用します。--foreman-oauth-map-users
を true
に設定すると、要求には、そのユーザーに対して表示権限が割り当てられたアーキテクチャーのみが含まれます。署名は、全パラメーター、HTTP メソッドおよび URI 変更を反映します。
要求例:
$ curl 'https://satellite.example.com/api/architectures' \ --header 'Content-Type: application/json' \ --header 'Accept:application/json' \ --header 'FOREMAN-USER: My_User_Name' \ --header 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='