9.5. JavaScript 통합


Red Hat Single Sign-On Server에는 정책 적용자가 보호하는 리소스 서버와 상호 작용하는 데 사용할 수 있는 JavaScript 라이브러리가 제공됩니다. 이 라이브러리는 Red Hat Single Sign-On JavaScript 어댑터를 기반으로 하며, 이를 통합하여 클라이언트가 Red Hat Single Sign-On 서버에서 권한을 얻을 수 있습니다.

웹 페이지에 다음 스크립트 태그를 포함하여 실행 중인 Red Hat Single Sign-On Server 인스턴스에서 이 라이브러리를 가져올 수 있습니다.

Copy to Clipboard Toggle word wrap
<script src="http://.../auth/js/keycloak-authz.js"></script>

이렇게 하면 다음과 같이 KeycloakAuthorization 인스턴스를 생성할 수 있습니다.

Copy to Clipboard Toggle word wrap
const keycloak = ... // obtain a Keycloak instance from keycloak.js library
const authorization = new KeycloakAuthorization(keycloak);

keycloak-authz.js 라이브러리는 다음 두 가지 주요 기능을 제공합니다.

  • UMA 보호 리소스 서버에 액세스하는 경우 권한 티켓을 사용하여 서버에서 권한을 얻습니다.
  • 리소스를 전송하고 애플리케이션이 액세스하려는 범위를 보내 서버에서 권한을 얻습니다.

두 경우 모두 라이브러리를 사용하면 리소스 서버와 Red Hat Single Sign-On 인증 서비스와 쉽게 상호 작용하여 클라이언트가 리소스 서버의 보호 리소스에 액세스하는 데 사용할 수 있는 권한을 통해 토큰을 가져올 수 있습니다.

9.5.1. UMA 보호 리소스 서버의 권한 부여 응답 처리

리소스 서버가 정책 적용자에 의해 보호되는 경우 전달자 토큰과 함께 전달된 권한에 따라 클라이언트 요청에 응답합니다. 일반적으로 보호된 리소스에 액세스할 수 있는 권한이 없는 전달자 토큰을 사용하여 리소스 서버에 액세스하려고 하면 리소스 서버는 401 상태 코드 및 WWW-Authenticate 헤더로 응답합니다.

Copy to Clipboard Toggle word wrap
HTTP/1.1 401 Unauthorized
WWW-Authenticate: UMA realm="${realm}",
    as_uri="https://${host}:${port}/auth/realms/${realm}",
    ticket="016f84e8-f9b9-11e0-bd6f-0021cc6004de"

자세한 내용은 UMA 권한 부여 프로세스를 참조하십시오.

클라이언트가 해야 하는 작업은 리소스 서버에서 반환한 WWW-Authenticate 헤더에서 권한 티켓을 추출하고 라이브러리를 사용하여 다음과 같이 권한 부여 요청을 보내는 것입니다.

Copy to Clipboard Toggle word wrap
// prepare a authorization request with the permission ticket
const authorizationRequest = {};
authorizationRequest.ticket = ticket;

// send the authorization request, if successful retry the request
Identity.authorization.authorize(authorizationRequest).then(function (rpt) {
    // onGrant
}, function () {
    // onDeny
}, function () {
    // onError
});

authorize 함수는 완전히 비동기식이며 서버로부터 알림을 수신하는 몇 가지 콜백 함수를 지원합니다.

  • OnGrant: 함수의 첫 번째 인수입니다. 권한 부여에 성공하고 서버가 요청된 권한이 있는 RPT를 반환하면 콜백에서 RPT를 수신합니다.
  • onDeny: 함수의 두 번째 인수입니다. 서버가 권한 부여 요청을 거부한 경우에만 호출됩니다.
  • OnError: 함수의 세 번째 인수입니다. 서버가 예기치 않게 응답한 경우에만 호출됩니다.

대부분의 애플리케이션에서는 onGrant 콜백을 사용하여 401 응답 후 요청을 다시 시도해야 합니다. 후속 요청에는 재시도를 위한 전달자 토큰으로 RPT가 포함되어야 합니다.

9.5.2. 인타이틀먼트 가져오기

keycloak-authz.js 라이브러리는 클라이언트가 액세스하려는 리소스와 범위를 제공하여 서버에서 RPT를 얻는 데 사용할 수 있는 인타이틀먼트 기능을 제공합니다.

예를 들어 사용자가 액세스할 수 있는 모든 리소스 및 범위에 대한 권한이 있는 RPT를 얻는 방법

Copy to Clipboard Toggle word wrap
authorization.entitlement('my-resource-server-id').then(function (rpt) {
    // onGrant callback function.
    // If authorization was successful you'll receive an RPT
    // with the necessary permissions to access the resource server
});

특정 리소스 및 범위에 대한 권한이 있는 RPT를 얻는 방법의 예

Copy to Clipboard Toggle word wrap
authorization.entitlement('my-resource-server', {
    "permissions": [
        {
            "id" : "Some Resource"
        }
    ]
}).then(function (rpt) {
    // onGrant
});

인타이틀먼트 기능을 사용하는 경우 액세스하려는 리소스 서버의 client_id 를 제공해야 합니다.

인타이틀먼트 기능은 완전히 비동기식이며 서버로부터 알림을 수신하는 몇 가지 콜백 함수를 지원합니다.

  • OnGrant: 함수의 첫 번째 인수입니다. 권한 부여에 성공하고 서버가 요청된 권한이 있는 RPT를 반환하면 콜백에서 RPT를 수신합니다.
  • onDeny: 함수의 두 번째 인수입니다. 서버가 권한 부여 요청을 거부한 경우에만 호출됩니다.
  • OnError: 함수의 세 번째 인수입니다. 서버가 예기치 않게 응답한 경우에만 호출됩니다.

9.5.3. 권한 부여 요청

인증인타이틀먼트 기능은 모두 권한 부여 요청 오브젝트를 수락합니다. 이 오브젝트는 다음 속성을 사용하여 설정할 수 있습니다.

  • 권한

    리소스 및 범위를 나타내는 오브젝트의 배열입니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    const authorizationRequest = {
       "permissions": [
           {
               "id" : "Some Resource",
               "scopes" : ["view", "edit"]
           }
       ]
    }
  • metadata

    해당 속성이 서버에서 권한 부여 요청을 처리하는 방법을 정의하는 오브젝트입니다.

    • response_include_resource_name

      RPT 권한에 리소스 이름이 포함되어야 하는 경우 서버에 대한 부울 값입니다. false인 경우 리소스 식별자만 포함됩니다.

    • response_permissions_limit

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

  • submit_request

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

9.5.4. RPT 얻기

라이브러리에서 제공하는 권한 부여 함수를 사용하여 이미 RPT를 받은 경우, 권한 부여 개체(이전에 표시된 기술 중 하나에 의해 초기화되었다고 가정함)에서 다음과 같이 RPT를 얻을 수 있습니다.

Copy to Clipboard Toggle word wrap
const rpt = authorization.rpt;
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat, Inc.