Red Hat API로 시작하기
Table of Contents
목차
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는 yum 명령 sudo yum install jq를 사용하여 설치할 수 있는 명령줄 JSON 프로세서입니다.
새로운 오프라인 토큰 생성
오프라인 토큰은 최소 30일에 한 번 이상 사용하고 액세스 토큰을 생성하는 데 사용되는 한 만료되지 않습니다. 이는 비밀번호처럼 작동하며 새로운 업데이트 토큰을 만들지 않고도 계속해서 계정을 인증할 수 있습니다.
경고: 네트워킹 모범 사례에 맞는 비밀번호 관리를 사용하세요. 비밀번호나 자격 증명을 일반 텍스트로 저장하는 것은 결코 안전하지 않습니다. 오프라인 토큰을 비밀번호와 동일한 수준의 보안 조치로 관리하여 무단 사용으로부터 보호하세요.
오프라인 토큰을 생성하려면 API 토큰 페이지로 이동한 뒤 토큰 생성 버튼을 클릭하세요.
액세스 토큰 생성
오프라인 토큰을 생성하면 해당 토큰을 사용하여 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 툴링 지원
API 호출에 대한 보다 구조화된 반환을 받으려면 jq 또는 선택적으로 json_reformat과 같은 JSON 포맷팅 도구를 설치하세요.
- json_reformat 은 Red Hat Enterprise Linux에 표준으로 제공되는 명령줄 JSON 포매터입니다.
OAuth 2.0을 지원하는 표준 OIDC 라이브러리 에 익숙한 개발자는 해당 라이브러리를 사용하여 Red Hat Subscription Management API에서 스크립트 및 애플리케이션에 대한 승인을 빌드할 수 있습니다.
API를 테스트하거나 API를 자주 사용하지 않는 사용자에게는 REST 클라이언트를 사용하는 것도 하나의 방법입니다. REST 클라이언트가 OAuth 2.0이나 사용자 정의 양식 제출을 지원하는 한, 해당 클라이언트를 사용하여 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 문서에 대한 리소스
문제 해결
-
https://access.redhat.com/management/api 에서 offline_token을 가져옵니다.
-
오프라인 토큰을 설정합니다.
\# offline_token='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
* Verify it's set:
# echo $offline_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 -
이전에 생성한 함수로 액세스 토큰을 가져옵니다.
\
\# 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
-
-
API 호출을 수행합니다.
\
\# curl -H "Authorization: Bearer $token" "https://api.access.redhat.com/management/v1/systems?limit=100"
Comments