8.2. 권한 가져오기


Red Hat Single Sign-On에서 권한을 얻으려면 토큰 끝점에 권한 부여 요청을 보냅니다. 결과적으로 Red Hat Single Sign-On은 요청되는 리소스와 범위와 관련된 모든 정책을 평가하고 서버가 부여한 모든 권한으로 RPT를 발행합니다.

클라이언트는 다음 매개변수를 사용하여 토큰 끝점에 권한 부여 요청을 보낼 수 있습니다.

  • grant_type

    이 매개변수는 필수입니다. urn:ietf:params:oauth:grant-type:uma-ticket 이어야 합니다.

  • 티켓

    이 매개변수는 선택 사항입니다. 클라이언트가 UMA 권한 부여 프로세스의 일부로 수신한 최신 권한 티켓입니다.

  • claim_token

    이 매개변수는 선택 사항입니다. 요청 중인 리소스 및 범위에 대한 권한을 평가할 때 서버에서 고려해야 하는 추가 클레임을 나타내는 문자열입니다. 이 매개변수를 사용하면 클라이언트가 Red Hat Single Sign-On에 클레임을 푸시할 수 있습니다. 지원되는 모든 토큰 형식에 대한 자세한 내용은 claim_token_format 매개변수를 참조하십시오.

  • claim_token_format

    이 매개변수는 선택 사항입니다. claim_token 매개변수에 지정된 토큰의 형식을 나타내는 문자열입니다. Red Hat Single Sign-On은 urn:ietf:params:oauth:token-type:jwthttps://openid.net/specs/openid-connect-core-1_0.html#IDToken 등 두 가지 토큰 형식을 지원합니다. urn:ietf:params:oauth:token-type:jwt 형식은 claim_token 매개변수가 액세스 토큰을 참조함을 나타냅니다. https://openid.net/specs/openid-connect-core-1_0.html#IDTokenclaim_token 매개변수가 OpenID Connect ID 토큰을 참조함을 나타냅니다.

  • rpt

    이 매개변수는 선택 사항입니다. 이전에 발행된 RPT는 새 권한도 평가하고 추가해야 하는 RPT입니다. 이 매개변수를 사용하면 클라이언트가 RPT를 보유하고 있는 클라이언트가 필요에 따라 권한이 추가되는 증분 승인을 수행할 수 있습니다.

  • 권한

    이 매개변수는 선택 사항입니다. 클라이언트가 액세스하려는 하나 이상의 리소스 및 범위를 나타내는 문자열입니다. 여러 리소스 및 범위에 대한 권한을 요청하기 위해 이 매개변수를 여러 번 정의할 수 있습니다. 이 매개변수는 클라이언트가 권한 티켓 없이 권한 요청을 보낼 수 있도록 urn:ietf:params:oauth:grant-type:uma-ticket 권한 부여 유형을 나타냅니다. 문자열 형식은 RESOURCE_ID#SCOPE_ID 여야 합니다. 예를 들어 리소스 A#Scope A,Resource A#Scope A, Scope B, Scope C,Resource A,#Scope A.

  • 대상

    이 매개변수는 선택 사항입니다. 클라이언트가 액세스하려는 리소스 서버의 클라이언트 식별자입니다. 권한 매개 변수가 정의된 경우 이 매개변수는 필수입니다. Red Hat Single Sign-On에 대한 힌트 역할을 하여 평가해야 하는 권한을 컨텍스트로 표시합니다.

  • response_include_resource_name

    이 매개변수는 선택 사항입니다. RPT 권한에 리소스 이름이 포함되어야 하는지 여부를 서버에 나타내는 부울 값입니다. false인 경우 리소스 식별자만 포함됩니다.

  • response_permissions_limit

    이 매개변수는 선택 사항입니다. RPT에 있을 수 있는 권한 수에 대한 제한을 정의하는 정수 N입니다. rpt 매개변수와 함께 사용하면 마지막 N개의 요청된 권한만 RPT에 유지됩니다.

  • submit_request

    이 매개변수는 선택 사항입니다. 서버가 권한 티켓에서 참조하는 리소스 및 범위에 대한 권한 요청을 생성해야 하는지 여부를 나타내는 부울 값입니다. 이 매개변수는 UMA 권한 부여 프로세스의 일부로 티켓 매개변수와 함께 사용되는 경우에만 적용됩니다.

  • response_mode

    이 매개변수는 선택 사항입니다. 서버가 권한 부여 요청에 응답하는 방법을 나타내는 문자열 값입니다. 이 매개변수는 표준 OAuth2 응답이 아니라 서버에서 부여한 전체 결정 또는 권한에 주로 관심이 있을 때 특히 유용합니다. 가능한 값은 다음과 같습니다.

    • 결정

      서버의 응답은 다음 형식으로 JSON을 반환하여 전체 결정만 나타내야 함을 나타냅니다.

      {
          'result': true
      }
      Copy to Clipboard

      권한 부여 요청이 권한에 매핑되지 않으면 403 HTTP 상태 코드가 대신 반환됩니다.

    • 권한

      서버의 응답에 다음 형식의 JSON을 반환하여 서버에서 부여하는 권한이 포함되어 있어야 함을 나타냅니다.

      [
          {
              'rsid': 'My Resource'
              'scopes': ['view', 'update']
          },
      
          ...
      ]
      Copy to Clipboard

      권한 부여 요청이 권한에 매핑되지 않으면 403 HTTP 상태 코드가 대신 반환됩니다.

클라이언트가 리소스 서버에서 보호되는 두 리소스에 액세스할 때 권한 부여 요청의 예.

curl -X POST \
  http://${host}:${port}/auth/realms/${realm}/protocol/openid-connect/token \
  -H "Authorization: Bearer ${access_token}" \
  --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \
  --data "audience={resource_server_client_id}" \
  --data "permission=Resource A#Scope A" \
  --data "permission=Resource B#Scope B"
Copy to Clipboard

클라이언트가 리소스에 액세스하고 리소스 서버에서 보호하는 권한 부여 요청의 예.

curl -X POST \
  http://${host}:${port}/auth/realms/${realm}/protocol/openid-connect/token \
  -H "Authorization: Bearer ${access_token}" \
  --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \
  --data "audience={resource_server_client_id}"
Copy to Clipboard

권한 부여 프로세스의 일부로 리소스 서버에서 권한 티켓을 수신한 후 클라이언트가 UMA 보호 리소스에 액세스할 때 권한 부여 요청의 예는 다음과 같습니다.

curl -X POST \
  http://${host}:${port}/auth/realms/${realm}/protocol/openid-connect/token \
  -H "Authorization: Bearer ${access_token}" \
  --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \
  --data "ticket=${permission_ticket}
Copy to Clipboard

Red Hat Single Sign-On 평가 프로세스에서 사용 권한 발급을 초래하는 경우 권한이 연결된 RPT를 발행합니다.

Red Hat Single Sign-On은 RPT로 클라이언트에 응답

HTTP/1.1 200 OK
Content-Type: application/json
...
{
    "access_token": "${rpt}",
}
Copy to Clipboard

서버의 응답은 다른 권한 부여 유형을 사용하는 경우 토큰 끝점의 다른 응답과 동일합니다. RPT는 access_token 응답 매개변수에서 얻을 수 있습니다. 클라이언트 권한이 없는 경우 Red Hat Single Sign-On은 403 HTTP 상태 코드로 응답합니다.

Red Hat Single Sign-On은 권한 부여 요청을 거부합니다.

HTTP/1.1 403 Forbidden
Content-Type: application/json
...
{
    "error": "access_denied",
    "error_description": "request_denied"
}
Copy to Clipboard

8.2.1. 클라이언트 인증 방법

클라이언트는 RPT를 얻으려면 토큰 끝점에 인증해야 합니다. urn:ietf:params:oauth:grant-type:uma-ticket 권한 유형을 사용하는 경우 클라이언트는 다음 인증 방법 중 하나를 사용할 수 있습니다.

  • 전달자 토큰

    클라이언트는 HTTP 인증 헤더의 전달자 자격 증명으로 액세스 토큰을 토큰 끝점에 보내야 합니다.

    예: 토큰 끝점에 인증하기 위해 액세스 토큰을 사용한 권한 부여 요청

    curl -X POST \
      http://${host}:${port}/auth/realms/${realm}/protocol/openid-connect/token \
      -H "Authorization: Bearer ${access_token}" \
      --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket"
    Copy to Clipboard

    이 방법은 클라이언트가 사용자를 대신하여 작동하는 경우 특히 유용합니다. 이 경우 전달자 토큰은 이전에 Red Hat Single Sign-On에서 사용자를 대신하여 작동하는 일부 클라이언트(또는 자체 대신)에 의해 발행된 액세스 토큰입니다. 권한은 액세스 토큰으로 표시되는 액세스 컨텍스트를 고려하여 평가됩니다. 예를 들어 사용자 A를 대신하여 액세스 토큰을 클라이언트 A에 발행한 경우 User A에 액세스할 수 있는 리소스 및 범위에 따라 권한이 부여됩니다.

  • 클라이언트 인증 정보

    클라이언트는 Red Hat Single Sign-On에서 지원하는 모든 클라이언트 인증 방법을 사용할 수 있습니다. 예를 들면 client_id/client_secret 또는 JWT입니다.

    예: 토큰 끝점에 인증하기 위해 클라이언트 ID 및 클라이언트 시크릿을 사용한 권한 부여 요청

    curl -X POST \
      http://${host}:${port}/auth/realms/${realm}/protocol/openid-connect/token \
      -H "Authorization: Basic cGhvdGg6L7Jl13RmfWgtkk==pOnNlY3JldA==" \
      --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket"
    Copy to Clipboard

8.2.2. 클레임 푸시

서버에서 권한을 얻는 경우 권한을 평가할 때 이러한 클레임을 정책에 사용할 수 있도록 임의의 클레임을 푸시할 수 있습니다.

권한 티켓(UMA flow)을 사용하지 않고 서버에서 권한을 얻는 경우 다음과 같이 권한 부여 요청을 토큰 끝점으로 보낼 수 있습니다.

curl -X POST \
  http://${host}:${port}/auth/realms/${realm}/protocol/openid-connect/token \
  --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \
  --data "claim_token=ewogICAib3JnYW5pemF0aW9uIjogWyJhY21lIl0KfQ==" \
  --data "claim_token_format=urn:ietf:params:oauth:token-type:jwt" \
  --data "client_id={resource_server_client_id}" \
  --data "client_secret={resource_server_client_secret}" \
  --data "audience={resource_server_client_id}"
Copy to Clipboard

claim_token 매개변수에는 아래 예제와 유사한 형식의 BASE64 인코딩 JSON이 필요합니다.

{
    "organization" : ["acme"]
}
Copy to Clipboard

형식은 각 클레임의 값이 문자열 배열이어야 하는 클레임을 하나 이상 예상합니다.

8.2.2.1. UMA를 사용하여 클레임 푸시

UMA 및 권한 티켓을 사용할 때 클레임을 푸시하는 방법에 대한 자세한 내용은 Permission API를 참조하십시오.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat