이 콘텐츠는 선택한 언어로 제공되지 않습니다.

Chapter 4. API call authentication


Interaction with the Satellite API requires SSL authentication with Satellite Server CA certificate and authentication with valid Satellite user credentials. You can use the following authentication methods.

4.1. SSL authentication overview

Red Hat Satellite uses HTTPS, which provides a degree of encryption and identity verification when communicating with Satellite Server. Satellite 6.16 does not support non-SSL communications.

By default, Satellite Server uses a self-signed certificate. This certificate acts as both the server certificate to verify the encryption key and the certificate authority (CA) to trust the identity of Satellite Server.

You can configure Satellite Server to use a custom SSL certificate. For more information, see Configuring Satellite Server with a custom SSL certificate in Installing Satellite Server in a connected network environment. For more information on disconnected Satellite Server, see Configuring Satellite Server with a custom SSL certificate in Installing Satellite Server in a disconnected network environment.

4.1.1. Configuring SSL authentication

Configure an SSL authentication for the API requests to Satellite Server.

Procedure

  1. Obtain a certificate from your Satellite Server by using one of the following options:

    • If you plan to call the API from a remote server, download the CA certificate:

      # curl -o /etc/pki/ca-trust/source/anchors/satellite.example.com-katello-server-ca.crt \
      http://satellite.example.com/pub/katello-server-ca.crt
    • If you plan to call the API directly on your Satellite Server, copy the certificate to the /etc/pki/ca-trust/source/anchors directory:

      # cp /var/www/html/pub/katello-server-ca.crt \
      /etc/pki/ca-trust/source/anchors/satellite.example.com-katello-server-ca.crt
  2. Add the certificate to the list of trusted CAs:

    $ update-ca-trust extract

Verification

  • Verify that your client trusts the Satellite SSL certificate by entering the API request without the --cacert option:

    $ curl --request GET \
    --user My_User_Name:My_Password \
    https://satellite.example.com/api/v2/hosts

4.2. HTTP authentication overview

All requests to the Satellite API require a valid Satellite user name and password. The API uses Basic HTTP authentication to encode these credentials and add to the Authorization header. For more information about Basic authentication, see RFC 2617 HTTP Authentication: Basic and Digest Access Authentication. If a request does not include an appropriate Authorization header, the API returns a 401 Authorization Required error.

Important

Basic authentication involves potentially sensitive information, for example, it sends passwords as plain text. The REST API requires HTTPS for transport-level encryption of plain text requests.

Some base64 libraries break encoded credentials into multiple lines and terminate each line with a newline character. This invalidates the header and causes a faulty request. The Authorization header requires the encoded credentials to be on a single line within the header.

4.3. Token authentication overview

Red Hat Satellite supports Personal Access Tokens that you can use to authenticate API requests instead of using your password. You can set an expiration date for your Personal Access Token and you can revoke it if you decide it should expire before the expiration date.

4.3.1. Creating a Personal Access Token

Use this procedure to create a Personal Access Token.

Procedure

  1. In the Satellite web UI, navigate to Administer > Users.
  2. Select a user for which you want to create a Personal Access Token.
  3. On the Personal Access Tokens tab, click Add Personal Access Token.
  4. Enter a Name for you Personal Access Token.
  5. Optional: Select the Expires date to set an expiration date. If you do not set an expiration date, your Personal Access Token will never expire unless revoked.
  6. Click Submit. You now have the Personal Access Token available to you on the Personal Access Tokens tab.

    Important

    Ensure to store your Personal Access Token as you will not be able to access it again after you leave the page or create a new Personal Access Token. You can click Copy to clipboard to copy your Personal Access Token.

Verification

  1. Make an API request to your Satellite Server and authenticate with your Personal Access Token:

    # curl https://satellite.example.com/api/status --user My_Username:My_Personal_Access_Token
  2. You should receive a response with status 200, for example:

    {"satellite_version":"6.16.0","result":"ok","status":200,"version":"3.5.1.10","api_version":2}

    If you go back to Personal Access Tokens tab, you can see the updated Last Used time next to your Personal Access Token.

4.3.2. Revoking a Personal Access Token

Use this procedure to revoke a Personal Access Token before its expiration date.

Procedure

  1. In the Satellite web UI, navigate to Administer > Users.
  2. Select a user for which you want to revoke the Personal Access Token.
  3. On the Personal Access Tokens tab, locate the Personal Access Token you want to revoke.
  4. Click Revoke in the Actions column next to the Personal Access Token you want to revoke.

Verification

  1. Make an API request to your Satellite Server and try to authenticate with the revoked Personal Access Token:

    # curl https://satellite.example.com/api/status --user My_Username:My_Personal_Access_Token
  2. You receive the following error message:

    {
      "error": {"message":"Unable to authenticate user My_Username"}
    }

4.4. OAuth authentication overview

As an alternative to Basic authentication, you can use limited OAuth 1.0a authentication. This is sometimes referred to as 1-legged OAuth.

To view OAuth settings, in the Satellite web UI, navigate to Administer > Settings > Authentication. The OAuth consumer key is the token to be used by all OAuth clients.

Satellite stores OAuth settings in the /etc/foreman/settings.yaml file. Use the satellite-installer script to configure these settings.

4.4.1. Configuring OAuth

Use satellite-installer to change OAuth settings on Satellite Server. Enter the following command to list all OAuth-related installer options:

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

Enabling OAuth user mapping

By default, Satellite authorizes all OAuth API requests as the built-in anonymous API administrator account. Therefore, API responses include all Satellite data. However, you can also specify the Satellite user that makes the request and restrict access to data to that user.

To enable OAuth user mapping, enter the following command:

# satellite-installer --foreman-oauth-map-users true
Important

Satellite does not sign the header in an OAuth request. Anyone with a valid consumer key can impersonate any Satellite user.

4.4.2. OAuth request format

Every OAuth API request requires the FOREMAN-USER header with the login of an existing Satellite user and the Authorization header in the following format:

--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'
Important

Use an OAuth client library to construct all OAuth parameters. For an example that uses the requests_oauthlib Python module, see How to execute an API call by using the OAuth authentication method via python script in Red Hat Satellite 6? in the Red Hat Knowledgebase.

Example

This example lists architectures by using OAuth for authentication. The request uses a My_User_Name username in the FOREMAN-USER header. With the --foreman-oauth-map-users set to true, the response includes only architectures that the user has access to view. The signature reflects every parameter, HTTP method, and URI change.

Example request:

$ 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='
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.