OAuth

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

OAuth는 API에 대한 최고의 승인 프로토콜로 부상했습니다. 버전 이 주제에서 자세히 다루는 OAuth의 내용은 OAuth에 정의되어 있습니다. 2.0 사양.

OAuth는 앱 최종 사용자가 승인할 수 있도록 하는 프로토콜입니다. 이 있어야 합니다. 앱을 사용하여 이러한 작업을 하는 데 액세스할 수 있습니다. 토큰API 제공업체에서 제공합니다. API 제공업체가 앱 측에서 인증 사용자의 인증 정보를 인증하고 사용자가 앱을 승인했는지 확인한 후 액세스 토큰 발급 하세요. 앱에서 보호된 API를 사용하면 Apigee Edge가 액세스 토큰을 확인하여 만료되지 않았음을 확인합니다. API 제공업체는 엔드포인트를 노출해야 합니다. 액세스 토큰을 얻을 수 있는 코드를 제공합니다

OAuth를 쉽게 사용할 수 있도록 Apigee Edge는 를 사용하면 별도의 작업 없이 정책을 사용하여 OAuth를 구성하고 시행할 수 있습니다. 코드를 작성할 수 있습니다. 이 주제에서는 API를 보호하는 방법, 액세스 권한을 얻는 방법을 알아봅니다. 이 액세스 토큰을 사용하여 보호되는 API에 액세스하는 방법을 설명합니다.

사용자 계정의 기본 OAuth 구성은 조직

편의를 위해 Apigee Edge의 모든 조직에는 OAuth 2.0 집합이 사전 구성되어 있습니다. 클라이언트 사용자 인증 정보 부여 유형을 구현하는 엔드포인트입니다. 클라이언트 사용자 인증 정보 부여 유형은 앱에 대한 대가로 액세스 토큰을 발급하는 절차를 정의합니다. 사용자 인증 정보를 제공합니다. 이러한 앱 사용자 인증 정보는 단순한 소비자 키와 비밀번호의 쌍이며, 조직에 등록된 각 앱의 Apigee Edge 문제입니다. '클라이언트 사용자 인증 정보' 고객 키와 비밀번호 쌍 자체를 나타냅니다.

에지 개발자 서비스를 사용하는 앱에 사용자 인증 정보를 발급하는 방법에 관한 자세한 내용은 다음을 참고하세요. 앱 등록 및 키 관리

그렇기 때문에 '스텝 업'은 상대적으로 간단합니다 API 키에서 API 보안 스키마 확인할 수 있습니다 두 스키마 모두 동일한 고객 키와 보안 비밀을 사용하여 클라이언트 앱의 유효성을 검사합니다. 차이점은 클라이언트 사용자 인증 정보가 필요에 따라 액세스 토큰을 취소할 필요 없이 쉽게 취소할 수 있기 때문에 앱의 고객 키입니다. 기본 OAuth 엔드포인트로 작업하려면 고객 키를 사용하면 됩니다. 토큰에서 액세스 토큰을 가져오기 위해 조직의 앱을 위해 생성된 보안 비밀 할 수 있습니다 (이미 고객 키와 secrets.)

클라이언트 사용자 인증 정보 부여에 대한 전체 사양은 OAuth 2.0 사양을 참조하세요.

정책으로 API 보호

액세스 토큰을 사용하려면 먼저 OAuth 액세스를 검증하도록 API를 구성해야 합니다. 토큰을 만들 수 있습니다 이렇게 하려면 액세스 토큰의 유효성을 검사합니다. 즉, 앱에서 클라이언트 ID로 앱에서 API 요청과 함께 유효한 액세스 토큰을 제시해야 합니다. Apigee Edge가 액세스 토큰 생성, 저장, 검증 뒤에 오는 복잡성을 처리합니다. 살펴봤습니다.

계정을 만들 때 OAuth 인증을 API에 쉽게 추가할 수 있습니다. 새 API 프록시를 사용합니다 새 API 프록시를 만들 때 기능을 추가할 수 있습니다. 따라서 OAuth 2.0 액세스 토큰의 인증을 추가할 수 있습니다. OAuth v2.0 액세스 토큰으로 보안 옆에 있습니다. 이 옵션을 선택하면 정책은 새로 생성된 API 프록시에 연결되며, 하나는 액세스 토큰을 확인하는 프록시, 다른 하나는 인증 후 액세스 토큰을 제거할 수 있습니다.

또한 OAuth v2.0 액세스 토큰으로 보안 설정 옵션을 선택하면 Publish API Product 체크박스를 선택할 수 있게 되고 자동으로 선택합니다. 새 API를 빌드할 때 제품을 자동으로 생성하려면 이 옵션을 선택하세요. 사용할 수 있습니다 자동 생성된 제품은 새 API 프록시에 연결된 상태로 생성됩니다. 만약 새 API를 연결할 기존 제품이 있는 경우 불필요한 제품을 만들지 않도록 체크박스를 선택합니다. 제품에 대한 자세한 내용은 다음을 참조하세요. API 제품이란 무엇인가요?

API 프록시에 대한 액세스 토큰 확인을 사용 설정해야 하는 경우 사용하는 API에 OAuthV2 유형의 정책을 연결하기만 하면 있습니다. OAuthV2 정책은 작업을 지정하여 작동합니다. 원하는 경우 액세스 토큰을 검증하려면 VerifyAccessToken이라는 작업을 지정합니다. (사용 가능한 다른 유형의 작업에는 OAuthV2 정책 유형에서 지원하는 GenerateAccessToken과 GenerateRefreshToken. 설정 시 이러한 작업에 대해 학습합니다. OAuth 엔드포인트)

VerifyOAuthTokens 정책 (OAuthV2 유형)

액세스 토큰의 유효성을 검사하는 정책 예시는 다음과 같습니다. (설정은 아래 표에 설명되어 있습니다.)

<OAuthV2 name="VerifyOAuthTokens"> 
  <Operation>VerifyAccessToken</Operation> 
</OAuthV2>

정책 설정

이름 설명 기본값 필수 여부
OAuthV2 정책 유형
name API 프록시 엔드포인트에서 참조되는 정책의 이름입니다. 구성할 수 있습니다 해당 사항 없음
Operation OAuthV2 정책으로 실행할 작업입니다. VerifyAccessToken을 지정하면 정책을 구성하여 액세스 토큰에 대한 요청을 확인하고 토큰이 유효하고 만료되지 않았으며 요청된 API 리소스를 사용할 수 있도록 승인되었습니다. (URI)를 표시합니다. (이를 확인하기 위해 정책에서는 앱이 승인된 API 제품을 읽습니다. consume.) 해당 사항 없음

관리 UI에서 이 정책을 만들려면 API > API 프록시.

API 프록시 목록에서 weatherapi를 선택합니다.

weatherapi의 Overview(개요)에서 Develop(개발)을 선택합니다. 합니다.

드롭다운 메뉴에서 새 정책 > OAuth v2.0

OAuth v2.0 정책을 선택하면 새 정책 구성 메뉴가 표시됩니다. 표시됩니다.

정책에 설명이 포함된 이름을 지정하고 정책 연결을 선택합니다. 흐름 사전 흐름, 요청을 정책 연결 설정으로 사용할 수 있습니다.

추가를 선택하면 정책이 생성되고 weatherapi의 요청에 연결됩니다. 사전 흐름.

정책을 추가하면 아래의 요청 프리플로우 구성이 Designer

텍스트 편집기 또는 IDE에서 로컬로 작업하는 경우 정책을 보호하려는 API 프록시의 요청 사전 흐름에 추가합니다.

<PreFlow>
  <Request>
    <Step><Name>VerifyOAuthTokens</Name></Step>
  </Request>
</PreFlow>

정책을 요청 PreFlow에 연결하면 정책이 항상 시행됩니다. (모든 요청 메시지에서)

이제 OAuth 2.0 클라이언트 사용자 인증 정보로 API를 보호했습니다. 다음 단계는 액세스 토큰을 얻고 이를 사용하여 보안 API에 액세스합니다.

액세스 토큰을 사용하여 리소스

이제 weatherapi가 OAuth 2.0으로 보호되었으므로, 앱은 생성합니다. 보호되는 리소스에 액세스하기 위해 앱은 요청에 '승인' HTTP 헤더를 사용하여 HTTP 요청을 보낼 수 있습니다.

$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

API에 OAuthV2 정책이 연결되어 있으므로 Apigee Edge에서 액세스 토큰이 API에 대한 액세스 권한을 부여하고 앱에 일기 예보를 반환 확인할 수 있습니다

그런데 앱은 어떻게 액세스 토큰을 얻을 수 있을까요? 이에 대해서는 다음 섹션에서 설명하겠습니다.

서비스 계정 간에 클라이언트 사용자 인증 정보를 액세스 토큰

앱은 고객 키/비밀번호 쌍을 토큰에 제시하여 액세스 토큰을 얻습니다. 엔드포인트가 있습니다. 토큰 엔드포인트는 oauth입니다. 따라서 앱은 oauth API에 의해 노출된 API를 호출해야 합니다. 프록시를 사용하여 액세스 토큰을 가져옵니다. 앱이 액세스 토큰을 갖게 되면 weatherapi를 호출할 수 있습니다. 또는 액세스 토큰이 취소될 때까지 반복되지 않아야 합니다.

이제 스스로를 앱 개발자라고 생각해야 합니다. 먼저 weatherapi의 이름을 지정하므로 앱의 액세스 토큰을 가져와야 합니다. 가장 먼저 해야 할 일은 고객 키/비밀번호 쌍 (또는 API 키 또는 앱 키).

Apigee에서 조직의 앱을 등록하여 고객 키와 비밀번호를 가져올 수 있습니다. Edge.

Apigee Edge 관리 UI에서 조직의 모든 앱을 볼 수 있습니다.

조직에 등록된 앱 목록이 표시됩니다.

앱이 표시되지 않는 경우 앱 등록 및 API 관리 주제에서 앱 등록 방법을 알아볼 수 있습니다. 키를 사용하는 것이 좋습니다.)

목록에서 앱을 선택하여 자세한 프로필을 확인합니다.

선택한 앱의 세부정보 보기에서 소비자 키 필드를 확인합니다. 및 Consumer Secret 이 두 값은 클라이언트 사용자 인증 정보를 제공합니다.

<ph type="x-smartling-placeholder">
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps \
-u myname:mypass 
</ph>

이 호출은 앱 ID별로 앱 목록을 반환합니다.

[ "da496fae-2a04-4a5c-b2d0-709278a6f9db", "50e3e831-175b-4a05-8fb6-05a54701af6e" ]

앱 ID에 대해 간단한 GET 호출을 수행하여 앱 프로필을 가져올 수 있습니다.

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \
-u myname:mypass 

예:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/da496fae-2a04-4a5c-b2d0-709278a6f9db \
-u myname:mypass 

API 호출은 지정한 앱의 프로필을 반환합니다. 예를 들어, weatherapp은 다음과 같은 JSON 표현을 사용합니다.

{
  "accessType" : "read",
  "apiProducts" : [ ],
  "appFamily" : "default",
  "appId" : "da496fae-2a04-4a5c-b2d0-709278a6f9db",
  "attributes" : [ ],
  "callbackUrl" : "http://weatherapp.com",
  "createdAt" : 1380290158713,
  "createdBy" : "noreply_admin@apigee.com",
  "credentials" : [ {
    "apiProducts" : [ {
      "apiproduct" : "PremiumWeatherAPI",
      "status" : "approved"
    } ],
    "attributes" : [ ],
    "consumerKey" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
    "consumerSecret" : "hAr4Gn0gA9vAyvI4",
    "expiresAt" : -1,
    "issuedAt" : 1380290161417,
    "scopes" : [ ],
    "status" : "approved"
  } ],
  "developerId" : "5w95xGkpnjzJDBT4",
  "lastModifiedAt" : 1380290158713,
  "lastModifiedBy" : "noreply_admin@apigee.com",
  "name" : "weatherapp",
  "scopes" : [ ],
  "status" : "approved"
}

consumerKeyconsumerSecret 값을 확인합니다. 이 사용자 인증 정보를 사용하여 HTTP 요청을 전송해야 합니다 권한 부여 유형은 요청에 대한 쿼리 매개변수로 표시됩니다. (조직의 이름이 반영되도록 {org_name} 변수의 값을 변경해야 합니다.) 참조하세요.)

액세스 토큰 가져오기 요청 만들기

다음 요청에서 consumerKey 값을 client_id 다음 값을 관련 consumerSecret 값으로 대체합니다. client_secret

$ curl https://{org_name}-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'

API 서비스는 고객 키와 비밀번호를 확인한 다음 이 앱에 대한 액세스 토큰:

{
  "issued_at" : "1380892555397",
  "application_name" : "957aa73f-25c2-4ead-8021-adc01f0d2c6b",
  "scope" : "",
  "status" : "approved",
  "api_product_list" : "[oauth-test]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "client_id" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
  "access_token" : "ylSkZIjbdWybfs4fUQe9BqP0LH5Z",
  "organization_name" : "rqa",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

위 응답에서 access_token 값을 확인합니다. 이 토큰을 사용하여 앱이 보호된 리소스에 대한 런타임 액세스 권한을 얻는 데 사용할 것입니다. 이 앱의 액세스 토큰: ylSkZIjbdWybfs4fUQe9BqP0LH5Z

이제 사용할 수 있는 유효한 액세스 토큰(ylSkZIjbdWybfs4fUQe9BqP0LH5Z)이 생겼습니다. API에 액세스할 수 있습니다

기본 OAuth 구성 작업

Apigee Edge의 각 조직 (무료 체험판 조직 포함)은 OAuth 토큰으로 프로비저닝됩니다. 할 수 있습니다 엔드포인트는 oauth입니다. 계정을 만드는 즉시 토큰 엔드포인트 사용을 시작할 수 있습니다. (Apigee Edge에서 사용)

기본 OAuth 엔드포인트는 다음과 같은 엔드포인트 URI를 노출합니다.

/oauth/client_credential/accesstoken

액세스 토큰을 받아야 하는 개발자에게 이 URI를 게시합니다. 앱 개발자는 이 엔드포인트를 호출할 수 있도록 앱을 구성하여 소비자 키/비밀번호 조합을 표시하여 액세스 토큰을 얻습니다.

기본 클라이언트 사용자 인증 정보 토큰 엔드포인트는 다음 URL에서 네트워크를 통해 노출됩니다.

https://{org_name}-{env_name}.apigee.net/oauth/client_credential/accesstoken

예를 들어 조직 이름이 'apimaker'인 경우 URL은 다음과 같습니다.

https://apimakers-test.apigee.net/oauth/client_credential/accesstoken

이 URL은 개발자가 액세스 토큰을 받기 위해 호출하는 URL입니다.

3-legged OAuth 구성

3-legged OAuth 구성 (승인 코드, 암시적 및 비밀번호 부여) 유형)의 경우 API 제공업체가 앱 최종 사용자를 인증해야 합니다. 이후 조직이 다른 방식으로 사용자를 인증하므로 일부 정책 맞춤설정 또는 코드가 필요합니다. OAuth를 사용자 스토어와 통합하세요. 예를 들어 모든 사용자가 활성 디렉터리, LDAP 또는 다른 사용자 저장소에 저장됩니다. 3-legged OAuth를 시작하려면 전체 OAuth 흐름에 이 사용자 스토어에 대한 확인을 통합해야 합니다.

<ph type="x-smartling-placeholder">

OAuth 1.0a

OAuth 1.0a 정책에 대한 자세한 내용은 OAuth v1.0a 정책을 참고하세요.

도움말 보기

자세한 내용은 Apigee를 참조하세요. 고객 지원.