เพิกถอนนโยบาย OAuth V2

คุณกำลังดูเอกสารประกอบของ 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 สร้างขึ้นจะมีรหัสของแอปนักพัฒนาซอฟต์แวร์ที่เชื่อมโยงกับโทเค็น จากนั้นคุณจึงเพิกถอนโทเค็นโดยอิงตามรหัสแอปดังกล่าวได้

เพิกถอนโดยใช้รหัสผู้ใช้ปลายทางของแอป

เพิกถอนโทเค็นเพื่อการเข้าถึง 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

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ name มีตัวอักษร ตัวเลข ช่องว่าง ขีดกลาง ขีดล่าง และจุด ค่านี้ต้องมีอักขระไม่เกิน 255 ตัว

(ไม่บังคับ) ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติที่แตกต่างออกไป

ไม่มีข้อมูล จำเป็น
continueOnError

ตั้งค่าเป็น false เพื่อแสดงผลข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งถือเป็นเรื่องปกติสำหรับนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้การดำเนินการโฟลว์ดำเนินต่อไปได้แม้ว่านโยบายจะล้มเหลวก็ตาม

false ไม่บังคับ
enabled

ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อปิดนโยบาย ระบบจะไม่บังคับใช้นโยบายแม้ว่าจะยังแนบอยู่กับขั้นตอนก็ตาม

จริง ไม่บังคับ
async

แอตทริบิวต์นี้เลิกใช้งานแล้ว

false เลิกใช้

องค์ประกอบ <DisplayName>

ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติที่แตกต่างออกไป

<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น

ไม่มีข้อมูล

หากคุณไม่ใส่องค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ name ของนโยบาย

การมีบุคคลอยู่ ไม่บังคับ
Type สตริง

องค์ประกอบ <AppId>

ระบุรหัสแอปนักพัฒนาของโทเค็นที่จะเพิกถอน ส่งตัวแปรที่มีรหัสแอปหรือรหัสแอปตรงตัว

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
ค่าเริ่มต้น

request.formparam.app_id (x-www-form-urlencrypted และระบุไว้ในเนื้อหาของคำขอ)

การมีบุคคลอยู่

ไม่บังคับ

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>
ค่าเริ่มต้น

request.formparam.enduser_id (x-www-form-urlencrypted และระบุไว้ในเนื้อหาของคำขอ)

การมีบุคคลอยู่

ไม่บังคับ

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>

หัวข้อที่เกี่ยวข้อง