사용자 ID 및 앱 ID별로 OAuth 2.0 토큰에 대한 액세스 사용 설정

Private Cloud용 Edge v. 4.17.09

이 문서에서는 OAuth 2.0 액세스 토큰의 검색과 취소를 사용 설정하는 방법을 설명합니다. 또는 둘 다일 수 있습니다.

앱 ID가 OAuth 액세스 토큰에 자동으로 추가됩니다. 따라서 아래 절차에 따라 조직에 토큰 액세스를 사용 설정하려면 앱 ID로 토큰에 액세스할 수 있습니다.

최종 사용자 ID로 OAuth 2.0 액세스 토큰을 검색하고 취소하려면 최종 사용자 ID가 있어야 합니다. 입력됩니다. 아래 절차는 최종 사용자 ID를 기존 토큰에 추가하는 방법 또는 새 토큰으로 전달됩니다

기본적으로 Edge에서 OAuth 2.0 액세스 토큰을 생성하면 토큰의 형식은 다음과 같습니다.

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

다음에 유의하세요.

  • application_name 필드에는 토큰과 연결된 앱의 UUID가 포함되어 있습니다. 가져오기 및 취소를 사용 설정하는 경우 이 ID가 여러분이 사용하는 앱 ID입니다.
  • access_token 필드에는 OAuth 2.0 액세스 토큰 값이 포함되어 있습니다.

최종 사용자 ID로 OAuth 2.0 액세스 토큰을 가져오고 취소할 수 있도록 하려면 OAuth 2.0 정책을 사용하여 아래 절차에 설명된 대로 사용자 ID를 토큰에 포함합니다.

최종 사용자 ID는 Edge에서 개발자의 이메일이 아닌 개발자 ID로 사용하는 문자열입니다. 있습니다. 가져오기 개발자 API 호출

토큰에 최종 사용자 ID를 포함하도록 Edge를 구성하면 app_enduser 필드로 대체될 수 있습니다.

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "app_enduser" : "6ZG094fgnjNf02EK",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

검색 및 취소를 위한 API 사용자 ID 및 앱 ID별 OAuth 2.0 액세스 토큰

다음 API를 사용하여 사용자 ID, 앱 ID 또는 둘 다를 통해 OAuth 토큰에 액세스할 수 있습니다.

토큰 액세스를 사용 설정하는 절차

다음 절차에 따라 OAuth 2.0 액세스 토큰을 가져오고 취소할 수 있습니다. 최종 사용자 ID 및 앱 ID입니다.

1단계: 조직에 토큰 액세스 지원 사용 설정

각 조직에 별도로 토큰 액세스를 사용 설정해야 합니다. 각각에 대해 아래의 PUT API를 호출합니다. OAuth 2.0 액세스 토큰의 검색 및 취소를 활성화하려는 조직 최종 사용자 ID 또는 앱 ID로 분류할 수 있습니다

다음 호출을 수행하는 사용자는 orgadmin 역할이거나 조직의 opsadmin. {curly}에 있는 값을 중괄호}를 조직별 값으로 바꿉니다.

> curl -H "Content-type:text/xml" -X POST \
  https://<ms-ip>:8080/v1/organizations/{org_name} \
  -d '<Organization name="{org_name}">
      <Properties>
        <Property name="features.isOAuthRevokeEnabled">true</Property>
        <Property name="features.isOAuth2TokenSearchEnabled">true</Property>
      </Properties>
    </Organization>' \ 
  -u {userEmail}:{mypassword}

단계 2: 조직의 opsadmin 역할 권한 설정

조직의 orgadminopsadmin 역할만 를 기반으로 OAuth 2.0 토큰을 검색 (HTTP GET)하고 취소 (HTTP PUT)할 수 있는 권한을 부여받아야 합니다. 사용자 ID 또는 앱 ID에 적용할 수 있습니다 액세스를 제어하려면 /oauth2 리소스에 대한 get 및 put 권한을 설정하고 조직을 보호합니다 이 리소스에는 다음과 같은 형식의 URL이 있습니다.

https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2

orgadmin 역할에는 필요한 권한이 이미 있어야 합니다. 대상 opsadmin 역할에 필요한 경우, 권한은 다음과 같습니다. 다음과 같습니다.

<ResourcePermission path="/oauth2">
    <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
    </Permissions>
</ResourcePermission>

Get 단일 Resource API 호출에 대한 권한으로 /oauth2 리소스입니다.

응답에 따라 역할에 대한 리소스 권한 Resource API 호출에 대한 권한을 삭제하여 /oauth2에 필요한 조정 수행 리소스에 관한 권한을 부여할 수 있습니다

다음 cURL 명령어를 사용하여 /oauth2 리소스에 대한 opsadmin 역할 getput 권한을 부여합니다. 다음에서 값을 바꿉니다. {중괄호}를 조직별 값으로 바꿉니다.

> curl -X POST -H 'Content-type:application/xml' \
  http://<ms-ip>:8080/v1/organizations/{org}/userroles/opsadmin/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
      </Permissions>
    </ResourcePermission>' \
  -u {USEREMAIL}:{PWD} 

다음 cURL 명령어를 사용하여 다음을 제외한 다른 역할에서 /oauth2 리소스에 대한 getput 권한을 취소합니다. orgadminopsadmin. {curly}에 있는 값을 중괄호}를 조직별 값으로 바꿉니다.

> curl -X DELETE -H 'Content-type:application/xml' \
  http://<msip>:8080/v1/organizations/{org-name}/userroles/{roles}/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions></Permissions>
    </ResourcePermission>' \
   -u {USEREMAIL}:{PWD} 

3단계: 설정 oauth_max_search_limit 속성

conf_keymanagement_oauth_max_search_limit/opt/apigee/customer/application/management-server.properties의 속성 파일이 100으로 설정되어 있는지 확인합니다.

conf_keymanagement_oauth_max_search_limit = 100

이 파일이 없으면 새로 만듭니다.

이 속성은 토큰을 가져올 때 사용되는 페이지 크기를 설정합니다. Apigee는 100의 값을 권장합니다. 필요에 따라 설정할 수 있습니다.

새로 설치하는 경우 속성이 이미 100으로 설정되어 있어야 합니다. 만약 다시 시작하려면 명령어:

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
> /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

4단계: 최종 사용자 ID를 포함하도록 토큰을 생성하는 OAuth 2.0 정책 구성

액세스 토큰을 생성하는 데 사용되는 OAuth 2.0 정책을 구성하여 반환합니다. 액세스 토큰에 최종 사용자 ID를 포함하여 다음을 수행하여 토큰을 검색하고 취소할 수 있습니다. 있습니다.

액세스 토큰에 최종 사용자 ID를 포함하도록 정책을 구성하려면 액세스 토큰에는 최종 사용자 ID가 포함되어야 하고 에는 최종 사용자 ID가 포함됩니다.

아래의 OAuth 2.0 정책(GenerateAccessTokenClient)은 OAuth 2.0 액세스를 생성합니다. 토큰입니다. 굵게 표시된 &lt;AppEndUser&gt; 태그가 추가되어 최종 사용자 ID가 포함된 변수입니다.

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
    <DisplayName>OAuth 2.0.0 1</DisplayName>
    <ExternalAuthorization>false</ExternalAuthorization>
    <Operation>GenerateAccessToken</Operation>
    <SupportedGrantTypes>
         <GrantType>client_credentials</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
    <GrantType>request.queryparam.grant_type</GrantType> 
    <AppEndUser>request.header.appuserID</AppEndUser> 
    <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

그런 다음, 다음 cURL 명령어를 사용하여 OAuth 2.0 액세스 토큰을 생성하고 사용자 ID를 appuserID 헤더로 전달할 수 있습니다.

> curl -H "appuserID:6ZG094fgnjNf02EK" \
https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials \
  -X POST \
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNXFmP&client_secret=gk5K5lIp943AY4'

이 예에서 appuserID 요청 헤더로 전달됩니다 다양한 방법으로 요청의 일부로 정보를 전달할 수 있습니다. 예를 들어 다음을 수행할 수 있습니다.

  • 양식 매개변수 변수 request.formparam.appuserID를 사용합니다.
  • 최종 사용자 ID를 제공하는 흐름 변수를 사용합니다.