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

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

ไอคอนนโยบาย

ภาพรวม

เพิกถอนโทเค็นเพื่อการเข้าถึง OAuth2 ที่เชื่อมโยงกับรหัสแอปของนักพัฒนาแอปหรือรหัสผู้ใช้ปลายทางของแอป หรือทั้งสองอย่าง

ใช้นโยบาย 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 จะไม่มี ID ผู้ใช้ปลายทางในโทเค็น คุณกำหนดค่า Apigee ให้รวมได้ รหัสผู้ใช้ปลายทางด้วยการเพิ่มองค์ประกอบ <AppEndUser> ลงในนโยบาย OAuthv2 ดังนี้

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessTokenV/Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

ในตัวอย่างนี้ ให้ส่งรหัสผู้ใช้ปลายทางไปยังนโยบาย OAuthv2 ในพารามิเตอร์การค้นหาชื่อ app_enduser จากนั้น ID ผู้ใช้ปลายทางจะรวมอยู่ในโทเค็นในองค์ประกอบ 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 ให้รวมรหัสผู้ใช้ไว้ด้วย ในโทเค็นดังที่แสดงด้านบน

หากต้องการรับรหัสผู้ใช้ปลายทางของแอป ให้ใช้ 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> ระบุเวลา Epoch ของ UTC เป็นมิลลิวินาที ระบบจะเพิกถอนโทเค็นทั้งหมดที่ออกก่อนเวลาดังกล่าว

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


การอ้างอิงองค์ประกอบ

การอ้างอิงองค์ประกอบจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย CancelOAuthV2

<?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 เพื่อให้ดำเนินการตามขั้นตอนได้อย่างต่อเนื่องแม้จะมีนโยบายแล้วก็ตาม ล้มเหลว

เท็จ ไม่บังคับ
enabled

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

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

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

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

เท็จ เลิกใช้

&lt;DisplayName&gt; องค์ประกอบ

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

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

ไม่มี

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

การมีบุคคลอยู่ ไม่บังคับ
ประเภท สตริง

&lt;AppId&gt; องค์ประกอบ

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

<AppId>appIdString</AppId>

or:

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

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

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

ไม่บังคับ

ประเภท สตริง
ค่าที่ถูกต้อง

ตัวแปรโฟลว์ที่มีสตริงรหัสแอปหรือสตริงตรง

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

ถ้า true และคุณมีโทเค็นเพื่อการเข้าถึงที่ทึบแสงแบบเดิม ฟังก์ชันทั้งสอง ระบบจะเพิกถอนโทเค็นการรีเฟรชและโทเค็นเพื่อการเข้าถึงหาก<AppId> หรือ ตรงกัน <EndUserId> หากเป็น false มีเพียงโทเค็นเพื่อการเข้าถึงเท่านั้นที่ถูกเพิกถอนและโทเค็นการรีเฟรชไม่มีการเปลี่ยนแปลง ใช้ลักษณะการทำงานเดียวกัน สำหรับโทเค็นเพื่อการเข้าถึงแบบทึบเท่านั้น

<Cascade>false<Cascade>
ค่าเริ่มต้น

เท็จ

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

ไม่บังคับ

ประเภท บูลีน
ค่าที่ถูกต้อง true หรือ false

&lt;EndUserId&gt; องค์ประกอบ

ระบุรหัสผู้ใช้ปลายทางของแอปของโทเค็นที่จะเพิกถอน ส่งผ่านตัวแปรที่มีฟิลด์ รหัสผู้ใช้หรือสตริงโทเค็นตามตัวอักษร

<EndUserId>userIdString</EndUserId>

or:

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

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

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

ไม่บังคับ

ประเภท สตริง
ค่าที่ถูกต้อง

ตัวแปรโฟลว์ที่มีสตริงรหัสผู้ใช้หรือสตริงตรง

&lt;RevokeBeforeTimestamp&gt; องค์ประกอบ

เพิกถอนโทเค็นที่ออกก่อนการประทับเวลา องค์ประกอบนี้ใช้งานได้กับ <AppId> และ <EndUserId> เพื่ออนุญาตให้คุณเพิกถอนโทเค็นได้ก่อนเวลาที่เจาะจง ค่าเริ่มต้นคือเวลาที่นโยบายทํางาน

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

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

การประทับเวลาที่มีการบังคับใช้นโยบาย

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

ไม่บังคับ

ประเภท จำนวนเต็ม 64 บิต (ยาว) แสดงจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่เที่ยงคืน วันที่ 1 มกราคม 1970 UTC
ค่าที่ถูกต้อง

โดยอาจเป็นตัวแปรโฟลว์ที่มีการประทับเวลาหรือการประทับเวลาลิเทอรัล การประทับเวลาต้องไม่เป็นเวลาในอนาคต และต้องไม่อยู่ก่อนวันที่ 1 มกราคม 2014

ตัวแปรโฟลว์

นโยบาย CancelOAuthV2 ไม่ได้ตั้งค่าตัวแปรโฟลว์

ข้อมูลอ้างอิงข้อผิดพลาด

ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ 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>

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