검색

2.2. 인증

download PDF

Red Hat Virtualization Manager 계정이 있는 모든 사용자는 API에 액세스할 수 있습니다. 모든 요청은 아래에 설명된 대로 OAuth 또는 기본 인증을 사용하여 인증해야 합니다.

2.2.1. OAuth 인증

Red Hat Virtualization 버전 4.0 이후 기본 인증 메커니즘은 OAuth 2.0 이며 RFC 6749 에 설명되어 있습니다.

OAuth 는 권한 부여 및 액세스 토큰을 얻기 위한 몇 가지 메커니즘이 포함된 정교한 프로토콜입니다. Red Hat Virtualization API에서 사용할 수 있는 유일한 지원은 RFC 6749 에 설명된 대로 리소스 소유자 암호 자격 증명 부여 입니다.

먼저 토큰을 가져와서 사용자 이름과 암호를 Red Hat Virtualization Manager Single Sign-On 서비스로 보내야 합니다.

POST /ovirt-engine/sso/oauth/token HTTP/1.1
Host: myengine.example.com
Content-Type: application/x-www-form-urlencoded
Accept: application/json

요청 본문에는 grant_type,범위,사용자 이름, 암호 매개변수가 포함되어야 합니다.

표 2.1. OAuth 토큰 요청 매개변수
이름

grant_type

암호

scope

ovirt-app-api

사용자 이름

admin@internal

암호

mypassword

이러한 매개변수는 URL로 인코딩 되어야 합니다. 예를 들어 사용자 이름의 @ 문자는 %40 으로 인코딩되어야 합니다. 결과 요청 본문은 다음과 같습니다.The resulting request body will be something like this:

grant_type=password&scope=ovirt-app-api&username=admin%40internal&password=mypassword
중요

scope 매개변수는 OAuth RFC에서 선택 사항으로 설명되지만 Red Hat Virtualization API와 함께 사용할 때는 필수이며 해당 값은 ovirt-app-api 여야 합니다.

사용자 이름과 암호가 유효한 경우 Red Hat Virtualization Manager Single Sign-On 서비스는 다음과 유사한 JSON 문서로 응답합니다.

{
  "access_token": "fqbR1ftzh8wBCviLxJcYuV5oSDI=",
  "token_type": "bearer",
  "scope": "...",
  ...
}

API 인증의 경우 관련 이름/값 쌍만 access_token 입니다. 어떤 방식으로든 이 작업을 조작하지 마십시오. SSO 서비스에서 제공하는 대로 정확하게 사용하십시오.

토큰이 획득되면 HTTP Authorization 헤더에 포함하고 Bearer 스키마를 사용하여 API에 대한 요청을 수행할 수 있습니다. 예를 들어 가상 머신 목록을 가져오려면 다음과 같은 요청을 보냅니다.

GET /ovirt-engine/api/vms HTTP/1.1
Host: myengine.example.com
Accept: application/xml
Authorization: Bearer fqbR1ftzh8wBCviLxJcYuV5oSDI=

토큰은 여러 요청에 여러 번 사용할 수 있지만 결국 만료됩니다. 만료되면 서버는 401 HTTP 응답 코드와 함께 요청을 거부합니다.

HTTP/1.1 401 Unauthorized

이러한 상황이 발생하면 Red Hat Virtualization Manager Single Sign-On 서비스에서 현재 새로 고침 토큰을 지원하지 않으므로 새 토큰이 필요합니다. 위에서 설명한 것과 동일한 방법을 사용하여 새 토큰을 요청할 수 있습니다.

2.2.2. 기본 인증

중요

기본 인증은 이전 버전과의 호환성을 위해서만 지원됩니다. Red Hat Virtualization 버전 4.0부터 사용되지 않으며 향후 제거될 예정입니다.

각 요청에서 HTTP 기본 인증을 사용합니다. [1] 인증 정보를 인코딩하려면 다음을 수행합니다. 요청에 적절한 Authorization 헤더가 포함되지 않은 경우 서버는 401 Authorization Required 응답을 보냅니다.

HEAD /ovirt-engine/api HTTP/1.1
Host: myengine.example.com

HTTP/1.1 401 Authorization Required

요청은 지정된 영역에 대한 Authorization 헤더를 사용하여 발행됩니다. 사용자 이름@domain:password 규칙을 사용하여 제공된 인증 정보에서 적절한 Red Hat Virtualization Manager 도메인 과 사용자를 인코딩합니다.

다음 표에서는 Base64 에서 자격 증명을 인코딩하는 프로세스를 보여줍니다.

표 2.2. API 액세스를 위한 인증 정보 인코딩
항목

사용자 이름

admin

domain

internal

암호

mypassword

인코딩되지 않은 인증 정보

admin@internal:mypassword

base64로 인코딩된 인증 정보

YWRtaW5AaW50ZXJuYWw6bXlwYXNzd29yZA==

다음과 같이 Base64로 인코딩된 인증 정보를 제공합니다.

HEAD /ovirt-engine/api HTTP/1.1
Host: myengine.example.com
Authorization: Basic YWRtaW5AaW50ZXJuYWw6bXlwYXNzd29yZA==

HTTP/1.1 200 OK
중요

기본 인증에는 일반 텍스트로 전송되는 암호와 같은 잠재적으로 민감한 정보가 포함됩니다. API에는 일반 텍스트 요청의 전송 수준 암호화를 위해 HTTPS(Hypertext Transfer Protocol Secure)가 필요합니다.

중요

일부 Base64 라이브러리는 결과를 여러 줄로 분할하고 각 행을 줄 바꿈 문자로 종료합니다. 이렇게 하면 헤더가 끊어지고 잘못된 요청이 발생합니다. Authorization 헤더에는 헤더 내에서 한 줄에 인코딩된 인증 정보가 필요합니다.

2.2.3. 인증 세션

API는 인증 세션 지원도 제공합니다. 인증 세부 정보가 있는 초기 요청을 보낸 다음 세션 쿠키를 사용하여 모든 후속 요청을 전송하여 인증합니다.

2.2.3.1. 인증된 세션 요청

  1. AuthorizationPrefer: persistent-auth 헤더를 사용하여 요청을 보냅니다.

    HEAD /ovirt-engine/api HTTP/1.1
    Host: myengine.example.com
    Authorization: Basic YWRtaW5AaW50ZXJuYWw6bXlwYXNzd29yZA==
    Prefer: persistent-auth
    
    HTTP/1.1 200 OK
    ...

    그러면 다음 헤더가 있는 응답을 반환합니다.

    Set-Cookie: JSESSIONID=5dQja5ubr4yvI2MM2z+LZxrK; Path=/ovirt-engine/api; Secure

    JSESSIONID= 값을 기록해 둡니다. 이 예제에서 값은 5dQja5ubr4yvI2MM2z+LxrK 입니다.

  2. JSESSIONID= 값을 사용하여 Prefer: persistent-auth cookies 헤더를 사용하여 모든 후속 요청을 전송합니다. 인증된 세션을 사용할 때 Authorization 헤더가 더 이상 필요하지 않습니다.

    HEAD /ovirt-engine/api HTTP/1.1
    Host: myengine.example.com
    Prefer: persistent-auth
    Cookie: JSESSIONID=5dQja5ubr4yvI2MM2z+LZxrK
    
    HTTP/1.1 200 OK
    ...
  3. 세션이 더 이상 필요하지 않은 경우 Prefer: persistent-auth 헤더 없이 서버에 대한 요청을 수행합니다.

    HEAD /ovirt-engine/api HTTP/1.1
    Host: myengine.example.com
    Authorization: Basic YWRtaW5AaW50ZXJuYWw6bXlwYXNzd29yZA==
    
    HTTP/1.1 200 OK
    ...


[1] 기본 인증은 RFC 2617: HTTP Authentication: Basic and#150 Access Authentication 에 설명되어 있습니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.