개요: OAuth API

Brightcove OAuth2 구현을 통해 다양한 Brightcove API에 대한 액세스 토큰을 얻을 수 있습니다.

개요

Brightcove의 구현은 다음 두 부분으로 구성됩니다.

  • OAuth API-사용 가능한 모든 OAuth 기능에 대한 액세스를 제공합니다.

  • OAuth 자격 증명 UI - Studio의 계정 설정 인터페이스를 통해 액세스할 수 있는 UI를 통해 브라이트코브 API를 사용하는 앱을 등록하고 클라이언트 ID와 클라이언트 암호를 생성하는 쉬운 방법을 제공합니다. 보다 API 인증 자격 증명 관리 OAuth UI 사용에 대한 안내를 참조하세요.

API 레퍼런스도 참조하십시오 .

용어 설명

OAuth

승인을위한 개방형 표준. OAuth는 클라이언트 응용 프로그램에 리소스 소유자를 대신하여 서버 리소스에 대한 '안전한 위임 된 액세스'를 제공합니다. OAuth는 기본적으로 리소스 소유자의 승인을 받아 권한 부여 서버가 타사 클라이언트에 액세스 토큰을 발급 할 수 있도록합니다. 그런 다음 클라이언트는 액세스 토큰을 사용하여 리소스 서버에서 호스팅하는 보호 된 리소스에 액세스합니다.

범위

리소스 세트 (API를 통해 액세스 가능) 및 해당 리소스에 대한 일부 작업 (예: “읽기” 및 “쓰기”) 을 설명하는 데이터 객체입니다. 액세스 토큰의 범위는 해당 토큰을 제공하여 수행 할 수있는 작업을 제한합니다.

고객

최종 사용자가 Brightcove API를 통해 리소스에 액세스하는 데 사용하는 앱입니다.

클라이언트 ID

OAuth 서비스에서 생성 된 클라이언트의 고유 식별자입니다.

클라이언트 비밀

클라이언트 ID와 함께 사용되며 클라이언트를 인증하기위한 암호 역할을하는 비트 문자열입니다.

액세스 토큰

API에 대한 임시 액세스를 제공하는 비트 문자열입니다. 액세스 토큰은 요청시 클라이언트에 대한 OAuth 서비스에서 반환됩니다.

흐름

OAuth로 보호 된 리소스에 성공적으로 액세스하는 작업 순서입니다.

기본 URL

OAuth API의 기본 URL은 다음과 같습니다.

    https://oauth.brightcove.com/v4
    
    

클라이언트 자격 증명 흐름

클라이언트 자격 증명 흐름에서 앱은 액세스 토큰을 요청하고 요청과 함께 클라이언트 ID와 클라이언트 암호를 OAuth 서비스에 전달합니다. 현재 이것은 Brightcove 고객에게 지원되는 유일한 흐름입니다.

클라이언트 자격 증명 흐름의 정확한 작동 방식은 시나리오에 따라 다릅니다.

조직 앱

이 시나리오에는 조직에 속한 계정에 대해서만 하나 이상의 Brightcove API와 상호 작용해야하는 앱이 있습니다. 앱은 특정 사용자와 연결되어 있지 않습니다. 이 경우 워크 플로는 다음과 같습니다.

조직 앱에 대한 클라이언트 자격 증명 워크플로
조직 앱에 대한 클라이언트 자격 증명 워크플로

이 시나리오를 구현하려면 다음을 수행합니다.

  1. OAuth UI 또는 OAuth 서비스를 사용하여 앱에 대한 클라이언트 ID와 시크릿을 가져옵니다. UI를 통해 단일 계정 또는 여러 계정에 대한 클라이언트 ID와 시크릿을 가져올 수 있습니다. 이것은 일회성 작업입니다.

  2. 서버 측 앱에 논리를 추가하여 액세스 토큰을 위해 OAuth API에 요청합니다. 구현은 앱의 언어에 따라 달라지지만 (가능하면 해당 언어에 맞는 기존 OAuth2 라이브러리를 사용하는 것이 좋습니다), 호출은 다음을위한 POST 요청입니다.

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

    client_idclient_secret는 기본 인증 헤더에 다음과 같이 전달됩니다. username:password

        Authorization: Basic {client_id}:{client_secret}
        
        

    전체{client_id}:{client_secret}문자열은 Base64로 인코딩되어야 합니다 (예: Node.js 에서는Buffer.toString("base64")메서드를 사용할 수 있음). CURL은 BASE64 인코딩을 자동으로 수행하므로 자격 증명을 로 전달하면 됩니다user {client_id}:{client_secret} . Content-Type: application/x-www-form-urlencoded헤더도 포함해야 합니다.

    요청 본문에는 키/값 쌍이 포함됩니다grant_type=client_credentials . Content-typex-www-form-urlencoded이므로 이를 요청 URL에 파라미터로 추가할 수도 있습니다.

        https://oauth.brightcove.com/v4/access_token?grant_type=client_credentials

    아래는access_token주어진 유효한client_id결과를 얻을 수 있는 매우 기본적인 Node.js client_secret앱입니다.

        /*
        * Simple node app to get an access_token for a Brightcove API
        * You will need to substitute valid client_id and client_secret values
        * for {your_client_id} and {your_client_secret}
        */
        var request = require('request');
        var client_id = "{your_client_id}";
        var client_secret = "{your_client_secret}";
        var auth_string = new Buffer(client_id + ":" + client_secret).toString('base64');
        console.log(auth_string);
        request({
        method: 'POST',
        url: 'https://oauth.brightcove.com/v4/access_token',
        headers: {
        'Authorization': 'Basic ' + auth_string,
        'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: 'grant_type=client_credentials'
        }, function (error, response, body) {
        console.log('Status: ', response.statusCode);
        console.log('Headers: ', JSON.stringify(response.headers));
        console.log('Response: ', body);
        console.log('Error: ', error);
        });
        
        
  3. 응답 본문은 다음과 같습니다.

        {
        "access_token": "ACikM-7Mu04V5s7YBlKgTiPu4ZO3AsTBlWt-73l5kXRN4IeRuIVlJHZkq_lFQdZBYfzT9B_nHNgcmNFdalxSiNdqOBaaV7wQCCnRCua_efHNCg9d_yLbezcjxr3AGcBKy9a8_t-uTMTA46T24LKMOBGBNJFkyATSZI4JuxU71VIyGF9hDisbKHmKC5G5HdQ0nJgyCD1w1zkKrB1CpFb5iiBuA_XOzehF-Xf5DBYnSkDhzzByuFwTv9dU9d7W6V2OuiKiTzCzY3st01qJTk6-an6GcAOD4N5pdN8prvvMDQhz_HunJIamvVGqBz7o3Ltw8CFFJMXKQdeOF8LX31BDnOvMBEz-xvuWErurvrA0r6x5eZH8SuZqeri4ryZAsaitHiJjz9gp533o",
        "token_type": "Bearer",
        "expires_in": 300
        }
        
        

    캡처해야 합니다access_token . 호출이 간헐적으로 진행되지 않는 한, 모든 API access_token호출에 대해 새 토큰을 요청하게 되는 경우가 아니라면 나중에 토큰이 유효한지 확인하는 데 사용할 수 있도록expires_in값을 캡처하는 것도 좋습니다. 그렇지 않은 경우 새 토큰을 요청해야 합니다. expires_in값은 초 단위입니다.

  4. 파일이 있으면 다음과access_token같은 형식의Authorization헤더에 있는 토큰을 포함하여 Brightcove API를 호출할 수 있습니다.

        Authorization: Bearer {access_token}
        
        

보다액세스 토큰 얻기자세한 내용과 코드 샘플은

일반 승인

이 시나리오는 주로 다양한 조직의 Brightcove 사용자가 사용할 수있는 앱을 만들 Brightcove 파트너에게 적용됩니다. 이 시나리오의 워크 플로는 다음과 같습니다.

다중 조직 앱에 대한 클라이언트 자격 증명 워크 플로
다중 조직 앱에 대한 클라이언트 자격 증명 워크 플로

첫 번째 시나리오가 아닌이 시나리오를 구현할 때의 유일한 차이점은 사용자가 OAuth UI에서 앱에 대한 클라이언트 ID와 시크릿을 가져 와서 양식을 통해 제공해야한다는 것입니다. 그런 다음 이를 앱에 전달하여 요청과 함께access_token제출합니다. 그 외에는 모든 것이 동일합니다.

클라이언트 자격 증명 얻기

클라이언트 자격 증명 ( client_idclient_secret ) 을 가져오는 가장 쉬운 방법은 OAuth UI를 사용하는것입니다. 하지만 OAuth 서비스에서 직접 가져오고 싶다면 다음 헤더를 전달하여 POST 요청을 보내면 됩니다. https://oauth.brightcove.com/v4/client_credentials

  • Content-Type: application/json
  • Authorization: BC_TOKEN your BC_TOKEN

또한 JSON 객체를 페이로드로 보내야합니다.

    {
      "type": "credential",
      "maximum_scope": [
        {
          "identity": {
            "type": "video-cloud-account",
            "type": "perform-account",
            "account-id": account_id1
          },
          "operations": [
            "video-cloud/player/all"
          ]
        },
        {
          "identity": {
          "type": "video-cloud-account",
          "type": "perform-account",
          "account-id": account_id2
        },
        "operations": [
          "video-cloud/player/all"
        ]
        }
      ],
      "name": "AnalyticsClient",
      "description": "My analytics app"
    }
    
    

운영

여기서 달라지는 것은 값뿐입니다. operations값은 액세스하려는 API와 읽기, 쓰기 또는 두 작업 모두에 액세스할 것인지 여부에 따라 달라집니다. 보다클라이언트 자격 증명 요청에 대한 API 작업현재 지원되는 모든 작업 목록.

curl 또는 Postman을 사용하여 클라이언트 자격 증명을 얻는 방법에 대한 자세한 지침은 다음을 참조하십시오.

OAuth 작업

API 요청에 대한 액세스 토큰 가져 오기를 처리하는 로직을 빌드하려면 두 가지 일반적인 진행 방법이 있습니다.

단일 서버 측 앱을 빌드하는 경우 논리를 앱에 빌드하는 것이 좋습니다. 작업 순서는 다음과 같습니다.

단일 앱 시퀀스
단일 앱 시퀀스

대신 Brightcove API를 호출해야하는 여러 앱을 빌드하거나 클라이언트 측 웹 앱을 만드는 경우 액세스 토큰을 단일 프록시로 가져 오기위한 코드를 통합하는 것이 더 합리적입니다. 이 경우 작업 순서는 다음과 같습니다.

프록시 시퀀스
프록시 시퀀스

참조빠른 시작간단한 프록시 생성에 대한 자세한 지침은

클라이언트 샘플 및 라이브러리

우리는 만들었습니다샘플 클라이언트 구현구현을 위한 모델을 제공하기 위해 여러 언어로 제공됩니다.

여러 언어로 사용할 수있는 OAuth2 라이브러리도 있으며 일반적으로 OAuth API와의 상호 작용을 구축하는 대신 가능하면 이러한 라이브러리를 사용하는 것이 좋습니다. 다음은 사용 가능한 라이브러리의 일부 목록입니다. 더 광범위한 목록은 https://oauth.net/2/를 참조하세요.

파이썬
PHP
코코아
코코아
iOS
iPhone 및 iPad
iOS 및 Mac MacOS
iOS 및 Mac MacOS
자바
루비
.NET
Qt / C ++
O2