คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X info

ภาพรวม
เพิกถอนโทเค็นการเข้าถึง OAuth2 ที่เชื่อมโยงกับรหัสแอปของนักพัฒนาแอปหรือรหัสผู้ใช้ปลายทางของแอป หรือทั้ง 2 รายการ
ใช้นโยบาย OAuthv2 เพื่อสร้างโทเค็นการเข้าถึง OAuth 2.0 โทเค็นที่ Apigee สร้างขึ้นจะมีรูปแบบดังนี้
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "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", //--in seconds "refresh_count" : "0" }
องค์ประกอบ application_name
มีรหัสแอปของนักพัฒนาแอปที่เชื่อมโยงกับโทเค็น
โดยค่าเริ่มต้น Apigee จะไม่รวมรหัสผู้ใช้ปลายทางไว้ในโทเค็น คุณสามารถกําหนดค่า Apigee ให้รวมรหัสผู้ใช้ปลายทางได้โดยเพิ่มองค์ประกอบ <AppEndUser>
ลงในนโยบาย OAuthv2 ดังนี้
<OAuthV2 name="GenerateAccessTokenClient"> <Operation>GenerateAccessTokenV/Operation> ... <AppEndUser>request.queryparam.app_enduser</AppEndUser> </OAuthV2>
ในตัวอย่างนี้ ให้ส่งรหัสผู้ใช้ปลายทางไปยังนโยบาย OAuthv2 ในพารามิเตอร์การค้นหาชื่อ app_enduser
จากนั้นระบบจะรวมรหัสผู้ใช้ปลายทางไว้ในโทเค็นในองค์ประกอบ 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", //--in seconds "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", //--in seconds "refresh_count" : "0" }
เพิกถอนตามรหัสแอปของนักพัฒนาแอป
เพิกถอนโทเค็นการเข้าถึง OAuth2 ที่เชื่อมโยงกับรหัสแอปของนักพัฒนาแอป โทเค็นการเข้าถึง OAuth2 ทั้งหมดที่ Apigee สร้างขึ้นจะมีรหัสของแอปนักพัฒนาแอปที่เชื่อมโยงกับโทเค็น จากนั้นคุณจะสามารถเพิกถอนโทเค็นตามรหัสแอปนั้นได้
ใช้ Developer apps API เพื่อดูรายการรหัสแอปของนักพัฒนาแอปที่เฉพาะเจาะจง
นอกจากนี้ คุณยังใช้ Developer apps API เพื่อดูรายละเอียดเกี่ยวกับแอปได้ด้วย
เพิกถอนตามรหัสผู้ใช้ปลายทางของแอป
เพิกถอนโทเค็นการเข้าถึง OAuth2 ที่เชื่อมโยงกับรหัสของผู้ใช้ปลายทางของแอปที่เฉพาะเจาะจง นี่คือโทเค็นที่เชื่อมโยงกับรหัสของผู้ใช้ที่ได้รับโทเค็น
โดยค่าเริ่มต้น จะไม่มีช่องสำหรับรหัสผู้ใช้ปลายทางในโทเค็นการเข้าถึง OAuth หากต้องการเปิดใช้การเพิกถอนโทเค็นการเข้าถึง OAuth 2.0 ตามรหัสผู้ใช้ปลายทาง คุณต้องกำหนดค่านโยบาย OAuthv2 ให้รวมรหัสผู้ใช้ไว้ในโทเค็น ดังที่แสดงด้านบน
หากต้องการรับรหัสผู้ใช้ปลายทางของแอป ให้ใช้ Developer apps API
ตัวอย่าง
ตัวอย่างต่อไปนี้ใช้นโยบายเพิกถอน OAuth V2 เพื่อเพิกถอนโทเค็นการเข้าถึง OAuth2
รหัสแอปของนักพัฒนาแอป
หากต้องการเพิกถอนโทเค็นการเข้าถึงตามรหัสแอปของนักพัฒนาแอป ให้ใช้องค์ประกอบ <AppId>
ในนโยบาย
ตัวอย่างต่อไปนี้จะค้นหารหัสแอปของนักพัฒนาแอปของโทเค็นการเข้าถึงในพารามิเตอร์การค้นหาที่มีชื่อว่า
app_id
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> </RevokeOAuthV2>
นโยบายจะเพิกถอนโทเค็นการเข้าถึงเมื่อระบุรหัสของแอปนักพัฒนาแอป
เพิกถอนก่อนการประทับเวลา
หากต้องการเพิกถอนโทเค็นการเข้าถึงตามรหัสแอปของนักพัฒนาแอปซึ่งสร้างขึ้นก่อนวันที่และเวลาหนึ่งๆ ให้ใช้องค์ประกอบ <RevokeBeforeTimestamp>
ในนโยบาย <RevokeBeforeTimestamp>
ระบุเวลา UTC Epoch เป็นมิลลิวินาที ระบบจะเพิกถอนโทเค็นทั้งหมดที่ออกก่อนเวลาดังกล่าว
ตัวอย่างต่อไปนี้เพิกถอนโทเค็นการเข้าถึงสําหรับแอปของนักพัฒนาแอปที่สร้างก่อนวันที่ 1 กรกฎาคม 2019
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp> </RevokeOAuthV2>
องค์ประกอบ <RevokeBeforeTimestamp>
ใช้จำนวนเต็ม 64 บิต (long) ที่แสดงจํานวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่เที่ยงคืนของวันที่ 1 มกราคม 1970 (UTC)
การอ้างอิงองค์ประกอบ
การอ้างอิงองค์ประกอบจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย RevokeOAuthV2
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1"> <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <AppId ref="variable"></AppId> <EndUserId ref="variable"></EndUserId> <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp> <Cascade>false</Cascade> </RevokeOAuthV2>
แอตทริบิวต์ <RevokeOAuthV2>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
ตารางต่อไปนี้อธิบายแอตทริบิวต์ที่เหมือนกันสำหรับองค์ประกอบหลักของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
เลิกใช้งานแอตทริบิวต์นี้แล้ว |
เท็จ | เลิกใช้ |
องค์ประกอบ <DisplayName>
ใช้ร่วมกับแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการโดยใช้ชื่อที่สื่อความหมายเป็นภาษามนุษย์
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มี หากคุณละเว้นองค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบ <AppId>
ระบุรหัสแอปของนักพัฒนาแอปของโทเค็นที่จะเพิกถอน ส่งตัวแปรที่มีรหัสแอปหรือรหัสแอปที่เป็นตัวอักษร
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
ค่าเริ่มต้น |
|
---|---|
การมีบุคคลอยู่ |
ไม่บังคับ |
ประเภท | สตริง |
ค่าที่ใช้ได้ |
ตัวแปรการไหลที่มีสตริงรหัสแอปหรือสตริงตัวอักษร |
องค์ประกอบ <Cascade>
หาก true
และคุณมีโทเค็นการเข้าถึงแบบทึบแบบดั้งเดิม ระบบจะเพิกถอนทั้งโทเค็นการรีเฟรชและโทเค็นการเข้าถึงหาก <AppId>
หรือ <EndUserId>
ตรงกัน
หากเป็น false
ระบบจะเพิกถอนเฉพาะโทเค็นการเข้าถึงเท่านั้น ส่วนโทเค็นการรีเฟรชจะยังคงเหมือนเดิม ลักษณะการทำงานเดียวกันนี้มีผลกับโทเค็นการเข้าถึงแบบทึบแสงเท่านั้น
<Cascade>false<Cascade>
ค่าเริ่มต้น |
เท็จ |
---|---|
การมีบุคคลอยู่ |
ไม่บังคับ |
ประเภท | บูลีน |
ค่าที่ใช้ได้ | true หรือ false |
องค์ประกอบ <EndUserId>
ระบุรหัสผู้ใช้ปลายทางของแอปของโทเค็นที่จะเพิกถอน ส่งตัวแปรที่มีรหัสผู้ใช้หรือสตริงโทเค็นที่เป็นตัวอักษร
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
ค่าเริ่มต้น |
|
---|---|
การมีบุคคลอยู่ |
ไม่บังคับ |
ประเภท | สตริง |
ค่าที่ใช้ได้ |
ตัวแปรการไหลที่มีสตริงรหัสผู้ใช้ หรือสตริงตัวอักษร |
องค์ประกอบ <RevokeBeforeTimestamp>
เพิกถอนโทเค็นที่ออกก่อนการประทับเวลา องค์ประกอบนี้ใช้ได้กับ <AppId>
และ <EndUserId>
เพื่อให้คุณเพิกถอนโทเค็นก่อนถึงเวลาที่กำหนดได้
ค่าเริ่มต้นคือเวลาที่นโยบายจะทำงาน
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
ค่าเริ่มต้น |
การประทับเวลาที่นโยบายเริ่มทำงาน |
---|---|
การมีบุคคลอยู่ |
ไม่บังคับ |
ประเภท | จำนวนเต็ม 64 บิต (Long) ที่แสดงจํานวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่เที่ยงคืนของวันที่ 1 มกราคม 1970 (UTC) |
ค่าที่ใช้ได้ |
ตัวแปรการไหลที่มีการประทับเวลา หรือการประทับเวลาที่เป็นตัวอักษร การประทับเวลาต้องไม่เป็นเวลาในอนาคตและต้องไม่อยู่ก่อนวันที่ 1 มกราคม 2014 |
ตัวแปรของโฟลว์
นโยบาย RevokeOAuthV2 ไม่ได้ตั้งค่าตัวแปรของขั้นตอน
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้อธิบายรหัสข้อบกพร่องและข้อความแสดงข้อผิดพลาดที่แสดงผล รวมถึงตัวแปรข้อบกพร่องที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้สำคัญต่อการพัฒนากฎข้อบกพร่องเพื่อจัดการข้อบกพร่อง ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดด้านนโยบายและการจัดการข้อบกพร่อง
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน ชื่อข้อผิดพลาดที่แสดงด้านล่างคือสตริงที่มีการกำหนดให้กับตัวแปร fault.name
เมื่อเกิดข้อผิดพลาด ดูรายละเอียดเพิ่มเติมได้ในส่วนตัวแปรข้อผิดพลาดด้านล่าง
รหัสข้อบกพร่อง | สถานะ HTTP | สาเหตุ |
---|---|---|
steps.oauth.v2.InvalidFutureTimestamp |
500 | การประทับเวลาต้องไม่เป็นเวลาในอนาคต |
steps.oauth.v2.InvalidEarlyTimestamp |
500 | การประทับเวลาต้องอยู่หลังวันที่ 1 มกราคม 2014 |
steps.oauth.v2.InvalidTimestamp |
500 | การประทับเวลาไม่ถูกต้อง |
steps.oauth.v2.EmptyAppAndEndUserId |
500 | AppdId และ EndUserId ต้องไม่ว่างเปล่า |
ข้อผิดพลาดในการติดตั้งใช้งาน
ดูข้อมูลเกี่ยวกับข้อผิดพลาดในการทำให้ใช้งานได้จากข้อความที่รายงานใน UI
ตัวแปรข้อบกพร่อง
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาดที่รันไทม์
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
fault.name="fault_name" |
fault_name คือชื่อข้อบกพร่องตามที่แสดงในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อบกพร่องคือส่วนสุดท้ายของรหัสข้อบกพร่อง | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name คือชื่อนโยบายที่ผู้ใช้ระบุซึ่งทำให้เกิดข้อผิดพลาด | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name คือชื่อนโยบายที่ผู้ใช้ระบุซึ่งทำให้เกิดข้อผิดพลาด | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name คือชื่อนโยบายที่ผู้ใช้ระบุซึ่งทำให้เกิดข้อผิดพลาด | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
ตัวอย่างการตอบกลับข้อผิดพลาด
{ "fault":{ "faultstring":"Timestamp is in the future.", "detail":{ "errorcode":"steps.oauth.v2.InvalidFutureTimestamp" } } }
ตัวอย่างกฎข้อบกพร่อง
<FaultRule name="RevokeOAuthV2 Faults"> <Step> <Name>AM-InvalidTimestamp</Name> </Step> <Condition>(fault.name = "InvalidFutureTimestamp")</Condition> </FaultRule>