Aktifkan akses ke token OAuth 2.0 menurut ID pengguna dan ID aplikasi

Edge for Private Cloud v. 4.17.01

Dokumen ini menjelaskan cara mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 berdasarkan ID pengguna akhir, ID aplikasi, atau keduanya.

ID aplikasi otomatis ditambahkan ke token akses OAuth. Oleh karena itu, setelah menggunakan prosedur di bawah untuk mengaktifkan akses token bagi organisasi, Anda dapat mengakses token berdasarkan ID aplikasi.

Untuk mengambil dan mencabut token akses OAuth 2.0 berdasarkan ID pengguna akhir, ID pengguna akhir harus ada dalam token akses. Prosedur di bawah ini menjelaskan cara menambahkan ID pengguna akhir ke token yang ada atau ke token baru.

Secara default, saat Edge membuat token akses OAuth 2.0, token tersebut memiliki format:

{
  "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"
}

Perhatikan hal berikut:

  • Kolom application_name berisi UUID aplikasi yang terkait dengan token. Jika Anda mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 menurut client ID, ini adalah client ID yang Anda gunakan.
  • Kolom access_token berisi nilai token akses OAuth 2.0.

Untuk memungkinkan pengambilan dan pencabutan token akses OAuth 2.0 berdasarkan ID pengguna akhir, konfigurasikan kebijakan OAuth 2.0 untuk menyertakan ID pengguna dalam token, seperti yang dijelaskan dalam prosedur di bawah.

ID pengguna akhir adalah string yang digunakan Edge sebagai ID developer, bukan alamat email developer. Anda dapat menentukan ID developer dari alamat email developer menggunakan panggilan Get Developer API.

Setelah Anda mengonfigurasi Edge untuk menyertakan ID pengguna akhir dalam token, ID tersebut akan disertakan sebagai kolom app_enduser, seperti yang ditunjukkan di bawah ini:

{
  "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 untuk mengambil dan mencabut token akses OAuth 2.0 berdasarkan ID pengguna dan ID aplikasi

Gunakan API berikut untuk mengakses token OAuth berdasarkan ID pengguna, ID aplikasi, atau keduanya:

Prosedur untuk mengaktifkan akses token

Gunakan prosedur berikut untuk mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 berdasarkan ID pengguna akhir dan ID aplikasi.

Langkah 1: Aktifkan dukungan akses token untuk organisasi

Anda harus mengaktifkan akses token untuk setiap organisasi secara terpisah. Panggil PUT API di bawah untuk setiap organisasi tempat Anda ingin mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 berdasarkan ID pengguna akhir atau ID aplikasi.

Pengguna yang melakukan panggilan berikut harus memiliki peran orgadmin atau opsadmin untuk organisasi. Ganti nilai di {curly braces} dengan nilai khusus organisasi Anda:

> 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}

Langkah 2: Tetapkan izin untuk peran opsadmin di organisasi

Hanya peran orgadmin dan opsadmin di organisasi yang boleh diberi izin untuk mengambil (HTTP GET) dan mencabut token OAuth 2.0 (HTTP PUT) berdasarkan ID pengguna atau ID aplikasi. Untuk mengontrol akses, tetapkan izin get dan put pada resource /oauth2 untuk organisasi. Resource tersebut memiliki URL dalam bentuk:

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

Peran orgadmin seharusnya sudah memiliki izin yang diperlukan. Untuk peran opsadmin untuk resource /oauth2, izinnya akan terlihat seperti ini:

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

Anda dapat menggunakan panggilan Get Permission for a Single Resource API untuk melihat peran mana yang memiliki izin untuk resource /oauth2.

Berdasarkan respons, Anda dapat menggunakan panggilan API Tambahkan Izin untuk Resource ke Peran dan Hapus Izin untuk Resource untuk melakukan penyesuaian yang diperlukan pada izin resource /oauth2.

Gunakan perintah cURL berikut untuk memberikan izin get dan put peran opsadmin untuk resource /oauth2. Ganti nilai di {curly braces} dengan nilai khusus organisasi Anda:

> 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} 

Gunakan perintah cURL berikut untuk mencabut izin get dan put untuk resource /oauth2 dari peran selain orgadmin dan opsadmin. Ganti nilai di {curly kurung kurawal} dengan nilai khusus organisasi Anda:

> 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} 

Langkah 3: Tetapkan properti oauth_max_search_limit

Pastikan properti conf_keymanagement_oauth_max_search_limit dalam file /opt/apigee/customer/application/management-server.properties disetel ke 100:

conf_keymanagement_oauth_max_search_limit = 100

Jika file ini tidak ada, buat file tersebut.

Properti ini menetapkan ukuran halaman yang digunakan saat mengambil token. Apigee merekomendasikan nilai 100, tetapi Anda dapat menetapkannya sesuai keinginan.

Pada penginstalan baru, properti ini seharusnya sudah ditetapkan ke 100. Jika Anda harus mengubah nilai properti ini, mulai ulang Server Pengelolaan dan Pemroses Pesan dengan menggunakan perintah:

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

Langkah 4: Konfigurasikan kebijakan OAuth 2.0 yang membuat token untuk menyertakan ID pengguna akhir

Konfigurasikan kebijakan OAuth 2.0 yang digunakan untuk membuat token akses guna menyertakan ID pengguna akhir dalam token. Dengan menyertakan ID pengguna akhir dalam token akses, Anda dapat mengambil dan mencabut token berdasarkan ID.

Untuk mengonfigurasi kebijakan agar menyertakan ID pengguna akhir dalam token akses, permintaan yang membuat token akses harus menyertakan ID pengguna akhir dan Anda harus menentukan variabel input yang berisi ID pengguna akhir.

Kebijakan OAuth 2.0 di bawah, bernama GenerateAccessTokenClient, menghasilkan token akses OAuth 2.0. Perhatikan penambahan tag <AppEndUser> dalam huruf tebal yang menentukan variabel yang berisi ID pengguna akhir:

<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>

Kemudian, Anda dapat menggunakan perintah cURL berikut untuk membuat token akses OAuth 2.0, dengan meneruskan ID pengguna sebagai header 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'

Dalam contoh ini, appuserID diteruskan sebagai header permintaan. Anda dapat meneruskan informasi sebagai bagian dari permintaan dengan banyak cara. Misalnya, sebagai alternatif, Anda dapat:

  • Menggunakan variabel parameter formulir: request.formparam.appuserID
  • Menggunakan variabel alur yang memberikan ID pengguna akhir