OAuth2를 사용하여 Edge API에 액세스

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

Apigee Edge를 사용하면 OAuth2 토큰으로 인증된 Edge API를 호출할 수 있습니다. Cloud 계정의 Edge에서는 OAuth2 지원이 기본적으로 사용 설정됩니다. Edge를 사용하는 경우 프라이빗 클라우드의 경우 먼저 SAML을 설정합니다.

OAuth2 작동 방식 (Apigee Edge API 사용)

Apigee Edge API에 대한 호출은 사용자가 누구인지 확인할 수 있도록 인증이 필요합니다. 있습니다. 인증을 위해 요청과 함께 OAuth2 액세스 토큰이 전송되어야 합니다. API에 액세스합니다.

예를 들어 Edge의 조직에 관한 세부정보를 확인하려면 다음과 같은 URL을 사용합니다.

https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

하지만 신원을 밝히지 않고 요청을 보낼 수는 없습니다. 그 외의 경우에는 누구나 조직의 세부정보를 볼 수 있습니다

OAuth2가 필요한 이유가 바로 여기에 있습니다. 사용자를 인증하려면 액세스 토큰을 Google에 전송해야 합니다. 할 수도 있습니다. 액세스 토큰은 사용자를 알려주므로 사용자가 조직의 세부정보를 볼 수 있습니다.

다행히 Edge OAuth2 서비스에 사용자 인증 정보를 전송하여 토큰을 가져올 수 있습니다. 이 서비스는 액세스 및 갱신 토큰으로 응답합니다

OAuth2 흐름: 초기 요청

다음 이미지는 처음으로 Edge API에 액세스할 때의 OAuth2 흐름을 보여줍니다. 시간:

<ph type="x-smartling-placeholder">
</ph> OAuth 흐름: 첫 번째 요청
그림 1: OAuth 흐름: 첫 번째 요청

그림 1과 같이 Edge API에 처음 요청을 실행하면 다음과 같이 됩니다.

  1. 액세스 토큰을 요청합니다. 이 작업은 Edge API, acurl 또는 get_token 예를 들면
    get_token
    Enter username:
    ahamilton@apigee.com
    Enter the password for user 'ahamilton@apigee.com'
    [hidden input]
    Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:
    123456
    입니다.
  2. Edge OAuth2 서비스가 액세스 토큰으로 응답하고 이를 stdout로 출력합니다. 예를 들면 다음과 같습니다.
    Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz
    AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm
    NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI
    GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic
    ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0
    RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG
    420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M
    2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw

    acurlget_token 유틸리티는 자동으로 액세스를 저장하고 ~/.sso-cli로 토큰 새로고침 (새로고침 토큰은 stdout). Edge OAuth2 서비스를 사용하여 토큰을 가져오는 경우 나중에 사용할 수 있습니다

  3. 액세스 토큰을 사용하여 Edge API에 요청을 보냅니다. acurl 첨부 자동으로 토큰을 생성합니다. 예를 들면 다음과 같습니다.
    acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

    다른 HTTP 클라이언트를 사용하는 경우 액세스 토큰을 추가해야 합니다. 예를 들면 다음과 같습니다.

    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"
  4. Edge API는 요청을 실행하고 일반적으로 데이터가 포함된 응답을 반환합니다.

OAuth2 흐름: 후속 요청

후속 요청에서는 사용자 인증 정보를 토큰으로 교환할 필요가 없습니다. 대신 이미 만료되지 않은 액세스 토큰만 포함할 수 있습니다.

<ph type="x-smartling-placeholder">
</ph> OAuth 흐름: 후속 요청
그림 2: OAuth 흐름: 후속 요청

그림 2와 같이 이미 액세스 토큰이 있는 경우 다음을 실행합니다.

  1. 액세스 토큰을 사용하여 Edge API에 요청을 보냅니다. acurl 첨부 자동으로 토큰을 생성합니다. 다른 도구를 사용하는 경우 토큰을 수동으로 추가해야 합니다.
  2. Edge API는 요청을 실행하고 일반적으로 데이터가 포함된 응답을 반환합니다.

OAuth2 흐름: 액세스 토큰이 만료되는 경우

12시간 후에 액세스 토큰이 만료되면 갱신 토큰을 사용하여 액세스 토큰:

<ph type="x-smartling-placeholder">
</ph> OAuth 흐름: 액세스 토큰 새로고침
그림 3: OAuth 흐름: 액세스 토큰 새로고침

그림 3과 같이 액세스 토큰이 만료된 경우:

  1. Edge API에 요청을 전송했지만 액세스 토큰이 만료되었습니다.
  2. Edge API가 요청을 승인되지 않은 것으로 간주하여 거부합니다.
  3. Edge OAuth2 서비스에 갱신 토큰을 전송합니다. acurl를 사용하는 경우 이 작업은 완료됨 자동으로 처리합니다
  4. Edge OAuth2 서비스가 새 액세스 토큰으로 응답합니다.
  5. 새 액세스 토큰을 사용하여 Edge API에 요청을 보냅니다.
  6. Edge API는 요청을 실행하고 일반적으로 데이터가 포함된 응답을 반환합니다.

토큰 가져오기

Edge API에 보낼 수 있는 액세스 토큰을 가져오려면 다음을 사용하면 됩니다. curl와 같은 유틸리티 외에 Apigee 유틸리티:

  • get_token 유틸리티: 액세스 권한을 위해 Apigee 사용자 인증 정보 교환 Edge API를 호출하는 데 사용할 수 있는 갱신 토큰입니다.
  • acurl 유틸리티: 표준 curl 명령어. 에지에 대한 HTTP 요청 작성 API를 사용하여 get_token에서 액세스 및 갱신 토큰을 가져오고 액세스 토큰을 Edge API입니다
  • Edge OAuth2 서비스의 토큰 엔드포인트: Edge API 호출을 통한 액세스 및 갱신 토큰의 Apigee 사용자 인증 정보입니다.

이러한 유틸리티는 Apigee 계정 사용자 인증 정보 (이메일 주소 및 기간이 다음과 같은 토큰의 경우:

  • 액세스 토큰은 12시간 후에 만료됩니다.
  • 갱신 토큰은 30일 후에 만료됩니다.

따라서 acurl 또는 get_token로 API를 성공적으로 호출하면 30일 동안 토큰 쌍을 계속 사용할 수 있습니다. 만료 후에는 새 토큰을 가져올 수 있습니다

OAuth2로 Edge API에 액세스

Edge API에 액세스하려면 API 엔드포인트에 요청을 전송하고 액세스 토큰을 포함합니다. curl와 같은 명령줄 유틸리티를 포함한 모든 HTTP 클라이언트를 사용하여 이 작업을 수행할 수 있습니다. Postman과 같은 브라우저 기반 UI 또는 acurl와 같은 Apigee 유틸리티를 지원합니다.

acurlcurl를 사용하여 Edge API에 액세스하는 방법은 다음에 설명되어 있습니다. 자세히 살펴보겠습니다

acurl 사용

acurl로 Edge API에 액세스하려면 초기 요청에 다음을 포함해야 합니다. 사용자 인증 정보를 제공합니다 Edge OAuth2 서비스가 액세스 및 갱신 토큰으로 응답합니다. acurl 토큰을 로컬에 저장합니다

후속 요청에서 acurl~/.sso-cli에 저장된 토큰을 사용하므로 토큰이 만료될 때까지 자격 증명을 다시 포함하지 않아도 됩니다.

다음 예는 초기 acurl 요청을 'ahamilton-eval' 조직:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com'
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies

[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]

이 예에서는 조직에 대한 세부정보를 가져오는 것 외에도 두 번째 요청을 보여줍니다. 'helloworld' 내의 정책 목록을 가져오는 API 프록시 두 번째 요청은 'o' 단축 '조직' 관련 을 입력합니다.

acurl는 두 번째 요청 시 액세스 토큰을 자동으로 전달합니다. 나 acurl에서 OAuth2 토큰을 저장하면 사용자 인증 정보를 전달할 필요가 없습니다. 그것은 후속 호출을 위해 ~/.sso-cli에서 토큰을 가져옵니다.

자세한 내용은 curl을 사용하여 Edge API에 액세스를 참조하세요.

curl 사용

curl를 사용하여 Edge API에 액세스할 수 있습니다. 이렇게 하려면 먼저 액세스 및 갱신 토큰을 사용할 수 있습니다 get_token 또는 Edge OAuth2 서비스.

액세스 토큰을 성공적으로 저장한 후에는 Edge API 호출의 Authorization 헤더입니다. 표시:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

액세스 토큰은 발급 후 12시간 동안 유효합니다. 액세스 토큰이 만료된 후 30일 동안 갱신 토큰을 사용하여 발급받을 수 있습니다. 다른 액세스 토큰을 사용할 수 있습니다. Apigee에서는 참조 토큰이 만료된 후에만 새 액세스 토큰을 요청할 것을 권장합니다. 사용자 인증 정보를 입력하고 모든 API 호출에 새 요청을 합니다.

토큰 만료

액세스 토큰이 만료되면 갱신 토큰을 사용하여 새 액세스 토큰을 받을 수 있습니다. 다시 제출해야 합니다

액세스 토큰을 갱신하는 방법은 사용 중인 도구에 따라 다릅니다.

  • acurl: 조치가 필요하지 않습니다. acurl에서 자동으로 액세스 토큰을 갱신함 오래된 버전의 요청이 포함된 요청을 보낼 때 발생합니다.
  • get_token: get_token를 호출하여 액세스 토큰을 새로고침합니다.
  • Edge OAuth2 서비스: 다음을 포함하는 요청을 보냅니다. <ph type="x-smartling-placeholder">
      </ph>
    • 갱신 토큰
    • grant_type 양식 매개변수가 'refresh_token'으로 설정됨

머신 사용자용 OAuth2

acurlget_token 유틸리티를 사용하여 자동 액세스를 스크립트로 작성할 수 있습니다. Edge API에 액세스할 수 있습니다. 다음 예는 다음을 실행하는 방법을 보여줍니다. 다음 용도로 get_token 사용 액세스 토큰을 요청한 후 curl 호출에 토큰 값을 추가합니다.

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '')
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

또는 acurl 유틸리티를 사용하여 토큰 요청과 curl 호출을 결합할 수 있습니다. 예를 들면 다음과 같습니다.

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
  

두 가지 예 모두에서 -m 값을 빈 문자열로 설정하면 머신 사용자가 MFA 코드를 입력하라는 메시지가 표시되지 않습니다.