SAML로 Edge API 액세스

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

SAML은 싱글 사인온 (SSO) 환경을 지원합니다. Edge와 함께 SAML을 사용하면 사용자가 제공하고 SAML을 지원하는 다른 서비스 외에도 Edge UI 및 API에 SSO를 지원할 수 있습니다.

사전 요구사항: 하나 이상의 조직에 SAML을 사용 설정해야 Edge API에 액세스하는 데 SAML을 사용할 수 있습니다.

SAML과 OAuth2의 차이점

SAML을 설정한 후 OAuth2를 사용하여 Edge API에 액세스하는 것과 매우 유사합니다. Edge API를 호출할 때 요청에 OAuth2 액세스 토큰을 포함합니다.

Edge API에 액세스할 때 SAML과 OAuth2의 주요 차이점은 토큰을 가져오는 방식에 있습니다. SAML을 사용하면 토큰 쌍을 가져올 때 다음을 포함해야 합니다.

  1. 영역: 퍼블릭 클라우드 사용자를 위한 Edge에서 토큰을 가져올 때 영역 이름을 참조해야 합니다.
  2. 비밀번호: 액세스/갱신 토큰 쌍을 요청할 때 일회용 비밀번호를 포함합니다.

SAML은 적절한 영역 이름을 추가하여 Edge OAuth2 서비스에서 동일한 엔드포인트를 사용합니다.

SAML로 액세스 토큰을 받으려면 이 섹션에 설명된 다음 방법 중 하나를 사용하면 됩니다.

토큰 생성 프로세스 자동화에 설명된 대로 머신 사용자를 위해 토큰 생성 프로세스를 자동화할 수도 있습니다.

get_token으로 액세스 토큰 가져오기

get_token 유틸리티를 사용하여 SAML과 함께 사용하는 OAuth2 액세스 및 갱신 토큰으로 사용자 인증 정보를 교환할 수 있습니다.

get_token으로 액세스 토큰 가져오기:

  1. SSO_LOGIN_URL 환경 변수를 로그인 URL로 설정합니다. 로그인 URL의 형식은 다음과 같습니다.
    https://zoneName.login.apigee.com

    예를 들어 이름이 'acme'인 영역의 경우 다음 예시와 같이 SSO_LOGIN_URL를 'https://acme.login.apigee.com'으로 설정합니다.

    export SSO_LOGIN_URL=https://acme.login.apigee.com
  2. get_token를 호출하여 OAuth2 액세스 토큰을 가져옵니다.
    get_token -u me@example.com

    일회용 비밀번호를 받으려면 표시된 URL을 방문하라는 메시지가 표시됩니다.

    Get passcode from https://acme.login.apigee.com/passcode
    [Note:  Passcode can be used only time time and expires] Input passcode (no spaces) and then press ENTER:

    최근에 ID 공급업체를 통해 로그인하지 않은 경우 로그인하라는 메시지가 표시됩니다.

    이 URL은 URL을 새로고침하여 새 비밀번호를 가져오거나 get_token에 비밀번호를 사용하여 액세스 토큰을 생성할 때까지 유효한 일회용 비밀번호를 반환합니다. 예를 들면 다음과 같습니다.

  3. 비밀번호를 입력합니다. get_token 유틸리티가 OAuth2 토큰을 가져와서 stdout에 액세스 토큰을 출력하고 ~/.sso-cli에 액세스 토큰과 갱신 토큰을 씁니다.

  4. 다음 예시와 같이 Edge API를 호출하고 Authorization: Bearer 헤더에 액세스 토큰을 전달합니다.
    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"

    액세스 토큰의 값은 stdout에서 복사할 수 있습니다.

    이 예에서는 특정 조직에 대한 세부정보를 가져옵니다. 관리 API 엔드포인트의 전체 목록은 Apigee Edge API 참조를 확인하세요.

액세스 토큰이 만료되면 get_token를 다시 호출하여 새 액세스 토큰을 가져올 수 있습니다. 예를 들면 다음과 같습니다.

get_token -u me@example.com

갱신 토큰이 만료될 때까지 새 비밀번호를 입력하라는 메시지가 표시되지 않습니다.

갱신 토큰이 만료되면 get_token에서 새 비밀번호를 입력하라는 메시지를 표시합니다. 새 OAuth2 액세스 토큰을 생성하려면 먼저 새 비밀번호를 생성해야 합니다.

Edge OAuth2 서비스로 액세스 토큰 가져오기

Edge OAuth2 서비스를 사용하여 SAML에 사용하는 액세스 토큰을 받을 수 있습니다. Edge API로 본인 인증을 하려면 초기 요청에 비밀번호를 사용하여 액세스/갱신 토큰 쌍을 가져오고 다시 토큰 쌍을 새로 가져옵니다.

Edge API로 토큰 쌍을 가져오려면 다음 안내를 따르세요.

  1. 브라우저에서 다음 URL로 이동하여 일회용 비밀번호를 가져옵니다.
    https://zoneName.login.apigee.com/passcode

    예를 들어, 이름이 'acme'인 영역의 경우 다음 URL로 이동합니다.

    https://acme.login.apigee.com/passcode

    최근에 ID 공급업체를 통해 로그인하지 않은 경우 로그인하라는 메시지가 표시됩니다.

    이 URL은 토큰을 받기 위한 사용자 인증 정보 역할을 하는 일회용 비밀번호를 반환하며, URL을 새로고침하여 새 비밀번호를 가져올 때까지 유효하게 유지됩니다. 또는 get_token와 함께 비밀번호를 사용하여 액세스 토큰을 생성할 수 있습니다. 예를 들면 다음과 같습니다.

  2. 다음 예시와 같이 Edge API에 요청을 전송합니다.
    curl https://zoneName.login.apigee.com/oauth/token \
          -s \
          -H "Accept: application/json" \
          -d 'grant_type=password&response_type=token&passcode=passcode'

    passcode는 승인을 위한 사용자 인증 정보 역할을 합니다.

    각 항목의 의미는 다음과 같습니다.

    • Authorization 헤더는 'Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0' (이 정확한 값 사용)입니다.
    • 요청 유형은 POST입니다.
    • 요청 본문에는 다음이 포함됩니다.
      • grant_type는 'password'입니다.
      • response_type는 'token'입니다.
      • passcode, 여기서 passcode는 이전 단계에서 반환된 비밀번호입니다.

    호출하면 액세스 및 갱신 토큰이 화면에 출력됩니다.

액세스 토큰을 갱신하려면 다음 안내를 따르세요.

다음 예시와 같이 https://zoneName.login.apigee.com/oauth/token에 요청을 제출합니다.

curl https://zoneName.login.apigee.com/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'

각 항목의 의미는 다음과 같습니다.

  • 요청 본문에는 다음이 포함됩니다.
    • grant_type는 'refresh_token'입니다.
    • refresh_token는 갱신 토큰의 값입니다.
  • Authorization 헤더는 'Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0' (이 정확한 값 사용)입니다.
  • 요청 유형은 POST입니다.

SAML로 Edge API에 액세스

curl 또는 Apigee 편의 유틸리티 acurl와 같은 도구를 사용하여 Edge API에 액세스할 수 있습니다.

다음 예시와 같이 curl를 사용하여 Edge API를 호출하고 Authorization: Bearer 헤더에 액세스 토큰을 전달합니다.

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

acurl를 사용하면 Authorization 헤더를 지정할 필요가 없습니다. 예를 들면 다음과 같습니다.

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

이러한 예시는 지정된 조직에 대한 세부정보를 가져오는 Edge API 엔드포인트를 호출합니다. Edge API 엔드포인트의 전체 목록은 Apigee Edge API 참조를 확인하세요.

토큰을 최신 상태로 유지하는 방법을 포함하여 API를 호출하는 추가 방법은 OAuth2로 Edge API에 액세스를 참조하세요.

SAML 영역의 머신 사용자

acurlget_token 유틸리티를 사용하여 SAML 영역의 머신 사용자를 위한 Edge API에 대한 자동 액세스를 스크립팅할 수 있습니다. 다음 예에서는 get_token를 사용하여 액세스 토큰을 요청한 후 토큰 값을 curl 호출에 추가하는 방법을 보여줍니다.

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

위의 예시에서 -m 값을 빈 문자열로 설정하면 머신 사용자에게 MFA 코드를 입력하라는 메시지가 표시되지 않습니다. --force-basic-auth 플래그를 사용하면 SAML 영역이 있는 요청에 의해 트리거된 비밀번호에 대한 표준 프롬프트가 재정의됩니다.

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

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