클라이언트 애플리케이션에 OAuth 2.0 기반 인증 사용

OAuth(Open Authorization) 2.0에서는 자원 소유자가 보호된 자원에 대한 액세스 권한을 부여할 수 있는 여러 방법을 설명합니다. IBM® Cloud Pak for Business Automation as a Service 클라우드 환경에 대한 클라이언트 애플리케이션 액세스를 인증하는 데 있어 ROPC(resource owner password credentials) 권한 부여 유형만 지원합니다.

참고: OAuth 2.0 기반 인증은 클라우드 등록에서 기본적으로 사용으로 설정되어 있지 않습니다. 사용을 원하시면, IBM 지원 포털을 통해 요청을 제출하십시오.

ROPC 권한 부여 유형

OAuth 2.0 용어에서 Cloud Pak for Business Automation as a Service 클라이언트 애플리케이션은 기밀 클라이언트입니다. ROPC 권한 부여 유형의 경우 클라이언트 신임 정보 세트(클라이언트 ID와 클라이언트 시크릿으로 구성)와 자원 소유자 사용자 이름 및 비밀번호가 필요합니다. 클라이언트 신임 정보를 얻으려면 Credentials API를 사용하여 생성하십시오. 사용자 이름 및 비밀번호의 경우 계정 관리자로 클라우드 포털에 로그인하고 서비스 신임 정보 세트를 생성하십시오. 그런 다음 클라이언트 애플리케이션에 필요한 권한을 할당하십시오. 권한은 OAuth 2.0 토큰을 기반으로 클라우드 환경에 대한 액세스를 제어하는 데 사용됩니다.

OAuth와 ROPC 권한 부여 유형에 대한 자세한 정보는 OAuth 2.0 Authorization Framework를 참조하십시오. Credentials 의 API에 대한 정보는 OAuth 2.0 기반 인증의 예: 자격 증명 REST API를 참조 하고, 서비스 자격 증명 취득에 대한 정보는 서비스 계정 생성 및 관리를 참조하십시오.

OAuth 2.0 클라이언트 신임 정보 관리

OAuth 2.0 클라이언트에서는 호출 클라이언트 컨텍스트를 식별하기 위해 클라이언트 신임 정보를 제공해야 합니다. 필요한 신임 정보 세트 수는 사용자가 결정합니다. 예를 들어 모든 OAuth 2.0 클라이언트에 하나의 세트를 사용하거나 클라이언트마다 개별 신임 정보 세트를 둘 수 있습니다.

클라이언트 애플리케이션의 OAuth 2.0 인증을 사용하려면 애플리케이션에 다음 상호작용이 포함되어야 합니다.
중요: 다음 호출은 응답의 일부로 PD-S-SESSION-ID및 PD-ID 쿠키에 대한 Set-Cookie 명령을 리턴할 수 있습니다. 후속 호출에서는 이 쿠키를 사용하지 마십시오.
  1. OAuth 2.0 액세스 토큰을 가져옵니다.
    OAuth 2.0 /token 엔드포인트를 사용하여 클라이언트(클라이언트 ID 및 클라이언트 시크릿) 및 서비스 인증 정보(사용자 이름 및 비밀번호)를 포함한 액세스 토큰을 확보하십시오. 예를 들어,
    curl -k -v -X POST -H 'content-type: application/x-www-form-urlencoded' 
    -d grant_type=password -d client_id=<clientId> -d client_secret=<clientSecret>
    -d username=<serviceCredId> -d password=<svcCredSecret>
    https://www.bpm.ibmcloud.com/mga/sps/oauth/oauth20/token
    
    이 호출에서는 후속 클라우드 오퍼레이션 API 호출에서 사용하는 액세스 토큰, 액세스 토큰을 새로 고치는 데 사용하는 새로 고치기 토큰 및 액세스 토큰의 만료 기간을 리턴합니다. 일반적으로 액세스 토큰은 몇 분 또는 몇 시간 동안 유효한 반면 새로 고치기 토큰은 며칠 동안 유효할 수 있습니다. 범위 지정은 지원되지 않습니다.
    {"access_token":"CJ7yDymDAfSRz03W7zdX","refresh_token":"fGAv2qzuLnM030Brs8KFaIuY1Kd2P87sLFXI85lH","scope":"","token_type":"bearer","expires_in":1799}*
    호출에 성공하면 HTTP 응답 코드 201이 리턴됩니다. 클라이언트 또는 서비스 인증 정보가 올바르지 않으면 호출에서 HTTP 응답 코드 BAD_REQUEST (400)을(를) 리턴합니다.
  2. 토큰을 사용하여 클라우드 오퍼레이션 API에 액세스합니다.
    이전 단계에서 리턴된 액세스 토큰을 클라우드 오퍼레이션 API 호출의 권한 헤더에 포함하십시오. 예를 들어,
    curl -k -v -H "Authorization: Bearer CJ7yDymDAfSRz03W7zdX" https://<tenantHost>/baw/dev/rest/bpm/wle/v1/user/current
    액세스 토큰이 올바르지 않거나 만료된 경우 호출에서 HTTP 응답 코드 302를 리턴합니다.
  3. 새로 고치기 토큰을 사용하여 액세스 토큰을 새로 고칩니다.
    OAuth 2.0 /token 엔드포인트를 사용하십시오.
    curl -k -v -X POST -H 'content-type: application/x-www-form-urlencoded' 
    -d grant_type=refresh_token -d refresh_token=fGU3UjAHG0XKTdnInU8ihqTLf48XJIzQtRUjNFVo
    -d client_id=<clientId> -d client_secret=<clientSecret>
    https://www.bpm.ibmcloud.com/mga/sps/oauth/oauth20/token
    
    이 호출에서 새로운 토큰 세트를 리턴합니다.
    {"access_token":"DkhN7gg7mk2gsBjGi8ay","refresh_token":"ToY13V2yfoYaeVbBjTwFLhzwX7GiKd7Y801VfjGC","scope":"","token_type":"bearer","expires_in":1799}
    새로 고치기 토큰이 올바르지 않거나 이미 사용되었거나 클라이언트 인증 정보가 올바르지 않은 경우(예: 삭제됨) 호출에서 HTTP BAD_REQUEST (400) 응답 코드를 리턴합니다.
  4. 클라이언트 애플리케이션 처리 종료 시 새로 고치기 토큰 및 액세스 토큰을 취소합니다.

    클라이언트 애플리케이션 처리가 완료되면 OAuth 2.0 /revoke 엔드포인트를 사용하여 두 토큰을 모두 취소하는 것이 좋습니다. 새로 고치기 토큰을 액세스 토큰보다 먼저 취소하십시오.

    예를 들어, 새로 고치기 토큰을 취소하려면 다음 호출을 사용하십시오.
    curl -k -v -X POST -H 'content-type: application/x-www-form-urlencoded' 
    -d client_id=<clientId> -d client_secret=<clientSecret>
    -d token=ToY13V2yfoYaeVbBjTwFLhzwX7GiKd7Y801VfjGC
    https://www.bpm.ibmcloud.com/mga/sps/oauth/oauth20/revoke
    
    이 호출에서는 항상 HTTP 성공 응답 코드(예: 200)를 리턴합니다.
    주의: API에 액세스한 후에도 액세스 토큰은 만료될 때까지 유효한 상태로 유지됩니다.

제한사항

유효한 수백 개의 동시 권한 부여(액세스 및 새로 고침 토큰 쌍)에 대한 시스템 정의 일별 한계가 있습니다. 권한 부여는 클라이언트 애플리케이션 및 리소스 소유자 사용자 이름별로 추적됩니다. 권한 부여 한계에 도달하지는 않을 것으로 예상되지만 권한 부여 한계에 도달했다는 메시지가 표시되면 클라이언트 애플리케이션에서 권한 부여 작성 설계를 확인하거나 IBM 지원팀에 문의하십시오.