คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
ภาพรวม
เพิกถอนโทเค็นเพื่อการเข้าถึง 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 สร้างขึ้นจะมีรหัสของแอปนักพัฒนาซอฟต์แวร์ที่เชื่อมโยงกับโทเค็น จากนั้นคุณจึงเพิกถอนโทเค็นโดยอิงตามรหัสแอปดังกล่าวได้
ใช้ 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 บิต (ยาว) ซึ่งแสดงจำนวนมิลลิวินาทีที่ผ่านไปตั้งแต่เที่ยงคืนของวันที่ 1 มกราคม 1970 ตามเขตเวลา UTC
การอ้างอิงองค์ประกอบ
การอ้างอิงองค์ประกอบจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย OAuthV2
<?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>
แอตทริบิวต์ <CancelOAuthV2>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
ตารางต่อไปนี้อธิบายแอตทริบิวต์ที่ใช้ร่วมกันในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มีข้อมูล | จำเป็น |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
false | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
false | เลิกใช้ |
องค์ประกอบ <DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติที่แตกต่างออกไป
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มีข้อมูล หากคุณไม่ใส่องค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
Type | สตริง |
องค์ประกอบ <AppId>
ระบุรหัสแอปนักพัฒนาของโทเค็นที่จะเพิกถอน ส่งตัวแปรที่มีรหัสแอปหรือรหัสแอปตรงตัว
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
ค่าเริ่มต้น |
|
---|---|
การมีบุคคลอยู่ |
ไม่บังคับ |
Type | สตริง |
ค่าที่ถูกต้อง |
ตัวแปรโฟลว์ที่มีสตริงรหัสแอปหรือสตริงตามตัวอักษร |
องค์ประกอบ <Cascade>
หาก true
และคุณมีโทเค็นเพื่อการเข้าถึงแบบทึบแสงแบบดั้งเดิม ระบบจะเพิกถอนทั้งโทเค็นการรีเฟรชและโทเค็นเพื่อการเข้าถึงหากตรงกัน <AppId>
หรือ <EndUserId>
หากเป็น false
ระบบจะเพิกถอนเฉพาะโทเค็นเพื่อการเข้าถึงและจะไม่เปลี่ยนแปลงโทเค็นการรีเฟรช ลักษณะการทำงานเดียวกันนี้จะใช้กับโทเค็นเพื่อการเข้าถึงที่ไม่ชัดเจนเท่านั้น
<Cascade>false<Cascade>
ค่าเริ่มต้น |
false |
---|---|
การมีบุคคลอยู่ |
ไม่บังคับ |
Type | บูลีน |
ค่าที่ถูกต้อง | true หรือ false |
องค์ประกอบ <EndUserId>
ระบุรหัสผู้ใช้ปลายทางของแอปของโทเค็นที่จะเพิกถอน ส่งตัวแปรที่มีรหัสผู้ใช้หรือสตริงโทเค็นแบบตรงตัว
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
ค่าเริ่มต้น |
|
---|---|
การมีบุคคลอยู่ |
ไม่บังคับ |
Type | สตริง |
ค่าที่ถูกต้อง |
ตัวแปรโฟลว์ที่มีสตริงรหัสผู้ใช้หรือสตริงตามตัวอักษร |
อีลิเมนต์ <RedirectbeforeTimestamp>
เพิกถอนโทเค็นที่ออกก่อนการประทับเวลา องค์ประกอบนี้ทำงานร่วมกับ <AppId>
และ <EndUserId>
เพื่อให้คุณเพิกถอนโทเค็นก่อนเวลาหนึ่งๆ ได้
ค่าเริ่มต้นคือเวลาที่นโยบายทำงาน
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
ค่าเริ่มต้น |
การประทับเวลาที่มีการเรียกใช้นโยบาย |
---|---|
การมีบุคคลอยู่ |
ไม่บังคับ |
Type | จำนวนเต็ม 64 บิต (ยาว) ซึ่งแสดงจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่เที่ยงคืนของวันที่ 1 มกราคม 1970 ตามเขตเวลา UTC |
ค่าที่ถูกต้อง |
ตัวแปรโฟลว์ที่มีการประทับเวลาหรือการประทับเวลาตามจริง การประทับเวลาต้องไม่เป็นวันที่ในอนาคตและต้องเป็นก่อนวันที่ 1 มกราคม 2014 |
ตัวแปรโฟลว์
นโยบาย RestoreOAuthV2 ไม่ได้ตั้งค่าตัวแปรโฟลว์
การอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กําหนดเมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน ชื่อข้อผิดพลาดที่แสดงด้านล่างเป็นสตริงที่กำหนดให้กับตัวแปร fault.name
เมื่อเกิดข้อผิดพลาด ดูรายละเอียดเพิ่มเติมได้ที่ส่วนตัวแปรของ Fault ด้านล่าง
รหัสข้อผิดพลาด | สถานะ 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>