API 요청에 대한 인증

이 항목에서는 브라이트코브 REST API 요청에 대한 인증에 대해 설명합니다.

서문

대부분의 브라이트코브 REST API는 OAuth2를 인증의 기반으로 사용하며, OAuth 구현에 대해서는 다음 섹션에서 자세히 살펴보겠습니다.

그러나 먼저 두 API는 서로 다른 인증 접근 방식을 사용합니다.

정책 키 인증: 재생 API

그만큼재생 API주로 플레이어 또는 웹 포털에서 비디오 및 재생 목록 데이터를 검색하는 데 사용되며policy_key , 인증을 위해 일반적으로Accept머리글:

        Accept: application/json;pk={policy_key}

정책 키는 브라이트코브 플레이어용으로 자동으로 생성되며플레이어구성에서 가져오거나 Policy API를 사용하여 생성할 수 있습니다.

API 키 인증: 라이브 API

Live API는 계정을 설정하여 요청을 인증할 때 제공되는 API 키를사용합니다. API 키는X-API-KEY헤더로 전달됩니다.

        X-API-KEY : {YOUR_APIKey}

OAuth2 인증

비디오 클라우드용 다른 REST API는 인증을 위해 OAuth2를 사용합니다. OAuth2에 익숙한 사용자는 클라이언트 자격 증명 흐름을 사용합니다. 관련된 두 가지 작업이 있습니다.

  1. 클라이언트 자격 증명 가져오기:이 작업은 Studio의 관리 도구에 있는 API 인증페이지를 사용하여 가장 쉽게 수행할 수 있는 일회성 작업입니다. 보다 API 인증 자격 증명 관리자세한 내용과 단계별 지침은
  2. 액세스 토큰 가져오기:각 API 요청에는Authorization헤더로 전송된 액세스 토큰이 포함되어야 합니다.
            Authorization: Bearer {access_token}

    액세스 토큰은 5분 동안 작동하므로 반복적인 API 요청을 생성하는 프로세스를 실행하지 않는 한 요청마다 새 토큰을 받고 싶을 것입니다.

    액세스 토큰은 요청에 따라 클라이언트 자격 증명을 브라이트코브의 OAuth API로 전송하여 얻을 수 있습니다. 자세한 내용은 액세스 토큰가져오기를 참조하십시오. 또 한있다샘플 앱 API 호출을 테스트하기 위한 일회성 토큰을 얻는 데 사용할 수 있습니다. 또한 인기 있는 REST 클라이언트인포스트맨과인섬니아를 구성하는 방법에 대한 지침도있습니다.

OAuth API를 통한 클라이언트 자격 증명

OAuth API를 사용하여 클라이언트 자격 증명을 만들거나 만들어야하는 경우 클라이언트 자격 증명을 가져 오는 과정을 안내하는 단계는 다음과 같습니다. 먼저 클라이언트 자격 증명 요청에 대해 인증하는 데 사용되는 BC_TOKEN을 가져와야합니다.

본인BC_TOKEN및 계좌 번호 받기

다운로드하려면 Studio에 로그인해야BC_TOKEN합니다.

  1. 평소와 같이 Studio에 로그인합니다.
  2. 계정 번호 (Studio에서는 게시자 ID라고 함)가 필요합니다. Studio의 계정 정보로 이동하여 얻을 수 있습니다.
    계정 ID
    계정 ID
  3. Studio의 페이지가 열리면 브라우저의 개발자 도구를 열고 콘솔로 이동하여 다음 코드를 붙여 넣습니다.
    var cookiesArray = document.cookie.split(";"), cookiesObj = {}, i, tmpArray = [];
    for (i = 0; i < cookiesArray.length; i++) {
        tmpArray = cookiesArray[i].split("=");
        if (tmpArray[0].indexOf('BC_TOKEN') > -1) {
            cookiesObj.BC_TOKEN = tmpArray[1];
        }
    }
    window.prompt("BC_TOKEN:", cookiesObj.BC_TOKEN);

    ... 그리고 Return을 누르십시오.

  4. 다음과 같은 내용이 포함된 프롬프트가 나타날 것입니다BC_TOKEN .
    BC_토큰
    BC_토큰
  5. BC_TOKEN을 가지고 있다면 클라이언트 자격 증명가져오기섹션으로 이동하세요. 어떤 이유로든 이전 단계에서 BC_TOKEN을 받지 못했다면 콘솔로 가서 입력하고document.cookie Return 키를 누르세요.
  6. 페이지의 모든 쿠키는 세미콜론으로 구분된 목록으로 반환됩니다. 목록에서 BC_TOKEN 쿠키를 찾아 값을 복사하십시오.
    콘솔에서 BC_TOKEN 가져오기
    콘솔에서 BC_TOKEN 가져오기

받기client_credentials

이제 OAuth 서비스를 호출하여 클라이언트 자격 증명을 검색할 준비가 되었습니다. 자격 증명을 요청하는 클라이언트 애플리케이션 이름을 지정해야합니다. 이름은 임의적이며 자격 증명의 용도를 추적하는 데 도움이됩니다. 여기서는 "ingest-profiles-api-client"만 사용합니다. 또한 배열에서 액세스하려는 작업의 범위를 지정해야하며 여기서 사용할 것입니다. 사용 가능한 작업은 클라이언트 자격 증명 요청에 대한 API 작업에 나와있습니다. 아래 단계에서는 Ingest Profiles API에 필요한 작업을 지정합니다.

  1. 다음 curl 명령을 편집한 다음 명령줄에 붙여넣고 Return 키를 누릅니다 . 다음 세 가지 값에 대해 특정 값을 제공해야 합니다.
    • 귀하의 BC_토큰
    • 자격 증명 이름
    • 귀하의 계정 ID
          curl \
            --include \
            --header "Authorization: BC_TOKEN your_BC_TOKEN" \
            --data 'name=ingest-profiles-api-client&maximum_scope=[{
                "identity": {
                  "type": "video-cloud-account",
                  "account-id": your_account_id
                },
                "operations": [
                      "video-cloud/ingest-profiles/profile/read",
                      "video-cloud/ingest-profiles/profile/write",
                      "video-cloud/ingest-profiles/account/read",
                      "video-cloud/ingest-profiles/account/write"
                  ]
              }]' \
          https://oauth.brightcove.com/v4/client_credentials
  2. 응답은 다음과 같아야합니다 (형식이 추가됨).
          {
            "redirect_url": null,
            "maximum_scope": [
              {
                "identity": {
                  "type": "video-cloud-account",
                  "account-id": your_video_cloud_account_id
                },
                "operations": [
                  "video-cloud/ingest-profiles/profile/write",
                  "video-cloud/ingest-profiles/account/write",
                  "video-cloud/ingest-profiles/profile/read",
                  "video-cloud/ingest-profiles/account/read"
                ]
              }
            ],
            "name_html": "ingest-profiles-api-client",
            "issued_to": "your_email@host.com",
            "trusted": null,
            "expires_at": null,
            "issued_at": "2015-06-01T15:09:00Z",
            "name": "ingest-profiles-api-client",
            "description_html": null,
            "revoked": null,
            "type": "credential",
            "client_secret": "Ifckr6cWtxOh_NZnEVhKCgcqZaqoMcPuoJ-VGuivIE_psPoPUt2hGqUK15uPON3x3m748ElazZoOKPxbI3-4nQ",
            "description": null,
            "client_id": "da270d86-f3cd-4ee6-85b0-047df97a0db2",
            "issued_user": your_video_cloud_account_id
          }
  3. 복사 및 저장client_id그리고client_secret , 당신이 필요로 할 때마다 필요하므로access_token .

OAuth API를 통한 액세스 토큰

클라이언트 자격 증명과 달리 액세스 토큰은 수명이 짧으며 현재 5 분 후에 만료됩니다. 각 API 요청에 대해 새로 가져와야합니다. 물론 앱에 로직을 빌드하여 최신 액세스 토큰을 확인하여 제한 시간이 초과되었는지 확인할 수 있지만 Ingest Profiles API에 대한 요청은 거의 없을 가능성이 높으므로 그렇게 할 이유가 없습니다.

실제로 API는 앱을 전혀 만들 가치가 없을 정도로 자주 사용하지 않을 수 있습니다. 대안은 사용하는 것입니다이 쉘 스크립트 Brightcove 학습 서비스가 구축했습니다. 클라이언트 ID와 시크릿, API 요청 및 방법, 모든 요청 데이터를 입력 할 수 있습니다. 그런 다음 를access_token가져와서 API를 요청하고 응답을 출력합니다. (참고로 셸 스크립트는 Mac macOS 및 기타 Unix/Linux 시스템에 기본적으로 설치되거나 Windows에 설치할수 있는 cURL을 사용합니다 .

액세스 토큰을 검색하려면 POST 요청을 수행합니다.

      https://oauth.brightcove.com/v4/access_token

이 호출과 함께 다음 헤더를 전달해야합니다.

  • Content-Type: application/x-www-form-urlencoded
  • Authorization: Basic {client_id}:{client_secret}

전체{client_id}:{client_secret}문자열은 Base64로 인코딩되어야 합니다. --user자격 증명으로 전달하면 curl은 문자열을 자동으로 Base64로 인코딩합니다. 다른 언어에서는 Base64 인코딩을 직접 처리해야 합니다.

또한 다음 키/값 쌍을 요청 본문 또는 URL 매개 변수로 보내야 합니다.

      grant_type=client_credentials

응답은 다음과 같습니다 (가독성을 위해 여기에 인쇄되어 있습니다).

      {
          "access_token": "ANB7xKhiUZmwltVd3f1odcHHM9VAwg02kwmLwtZwHv3SxGCOWLUf5W4G7X22PRjmR9StvFUqzpVZ1suOfyfOigdi-rnohxyEaSSuZceeLw_9OBW7fXldOG05HEgkeK3N-DBZZZyilodmjA1JWZHbgI3IU7Rmz5IPGyi-sDxHN3KlOr1BDZlLZpXPdFPwEyb6idq-z8AL-blKTSMtNI3_fz3oNBisfrHGUv5tXHoQT4B7FYcvdrap16gTOO7_wNt1zmgLJiUHvyxZgsgBchm_AhohVL-AYgcfCbCR0v7d2hgI4ag35pnZNeujDiBLfnCFcVMlqQGq8UEVZrmU9a8y4pVAGih_EImmghqmSrkxLPYZ800-vIWX-lw",
          "token_type": "Bearer",
          "expires_in": 300
      }

access_token값은 다음과 같은 형식으로 API 호출과 함께Authorization헤더에 전달해야 하는 값입니다.

      Authorization: Bearer {access_token}

expired_in값은 액세스 토큰이 유효한 시간 (초) 입니다.

자세한 내용과 샘플 코드는 액세스 토큰가져오기를 참조하십시오.