Dokumen ini menjelaskan cara mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 oleh ID pengguna akhir, ID aplikasi, atau keduanya.
ID aplikasi otomatis ditambahkan ke token akses OAuth. Oleh karena itu, setelah Anda menggunakan prosedur di bawah untuk mengaktifkan akses token untuk organisasi, Anda dapat mengakses token menurut ID aplikasi.
Untuk mengambil dan mencabut token akses OAuth 2.0 oleh 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 berdasarkan ID aplikasi, ini adalah ID aplikasi yang Anda gunakan. - Kolom
access_token
berisi nilai token akses OAuth 2.0.
Untuk mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 oleh ID pengguna akhir, konfigurasikan kebijakan OAuth 2.0 agar menyertakan ID pengguna dalam token, seperti yang dijelaskan pada prosedur di bawah.
ID pengguna akhir adalah string yang digunakan Edge sebagai ID developer, bukan alamat email developer. Anda dapat mengetahui ID developer dari alamat email developer menggunakan panggilan Get Developer API.
Setelah Anda mengonfigurasi Edge untuk menyertakan ID pengguna akhir dalam token, ID tersebut 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:
- Dapatkan Token Akses OAuth 2.0 berdasarkan ID Pengguna Akhir atau ID Aplikasi
- Mencabut Token Akses OAuth 2.0 berdasarkan ID Pengguna Akhir atau ID Aplikasi
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 ini 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 values dengan nilai khusus
organisasi Anda:
curl -H "Content-type:text/xml" -X POST \ https://management_server_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 USER_EMAIL:PASSWORD
Langkah 2: Tetapkan izin untuk peran opsadmin di organisasi
Hanya peran orgadmin
dan opsadmin
dalam organisasi yang boleh diberi izin untuk mengambil token OAuth 2.0 (HTTP GET) dan pencabutan (HTTP PUT) berdasarkan ID pengguna atau ID aplikasi. Untuk mengontrol akses, setel izin get dan masukkan izin pada resource /oauth2 untuk
sebuah organisasi. Referensi tersebut memiliki URL dalam bentuk:
https://management_server_IP:8080/v1/organizations/org_name/oauth2
Peran orgadmin
seharusnya sudah memiliki izin yang diperlukan. Untuk peran opsadmin
bagi 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 yang memiliki izin untuk
resource /oauth2
.
Berdasarkan respons, Anda dapat menggunakan panggilan API Add Permissions for Resource to a Role dan Delete Permission for Resource untuk melakukan penyesuaian yang diperlukan pada izin resource /oauth2.
Gunakan perintah curl
berikut untuk memberikan peran opsadmin
get
dan izin put
untuk resource /oauth2
. Ganti
values dengan nilai khusus organisasi Anda:
curl -X POST -H 'Content-type:application/xml' \ http://management_server_IP:8080/v1/organizations/org_name/userroles/opsadmin/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>' \ -u USEREMAIL:PASSWORD
Gunakan perintah curl
berikut untuk mencabut izin get
dan put
untuk resource /oauth2
dari peran selain
orgadmin
dan opsadmin
. Ganti values dengan nilai khusus organisasi Anda:
curl -X DELETE -H 'Content-type:application/xml' \ http://management_server_IP:8080/v1/organizations/org_name/userroles/roles/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions></Permissions> </ResourcePermission>' \ -u USEREMAIL:PASSWORD
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, buatlah file tersebut.
Properti ini menetapkan ukuran halaman yang digunakan saat mengambil token. Apigee merekomendasikan nilai 100, tetapi Anda dapat menetapkannya sesuai kebutuhan.
Saat penginstalan baru, properti harus sudah ditetapkan ke 100. Jika Anda harus mengubah nilai properti ini, mulai ulang Server Pengelolaan dan Pemroses Pesan 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, yang bernama GenerateAccessTokenClient, membuat 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>
Anda kemudian dapat menggunakan perintah curl
berikut untuk membuat token akses OAuth 2.0, yang 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 berbagai cara. Misalnya, sebagai alternatif, Anda dapat:
- Gunakan variabel parameter formulir:
request.formparam.appuserID
- Gunakan variabel alur yang menyediakan ID pengguna akhir