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

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

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

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


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

การอ้างอิงองค์ประกอบจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย 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

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

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

ไม่มี ต้องระบุ
continueOnError

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

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

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

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

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

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

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

เท็จ เลิกใช้

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

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

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

ไม่มี

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

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

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

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

<AppId>appIdString</AppId>

or:

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

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

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

ไม่บังคับ

ประเภท สตริง
ค่าที่ใช้ได้

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

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

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

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

เท็จ

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

ไม่บังคับ

ประเภท บูลีน
ค่าที่ใช้ได้ true หรือ false

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

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

<EndUserId>userIdString</EndUserId>

or:

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

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

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

ไม่บังคับ

ประเภท สตริง
ค่าที่ใช้ได้

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

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

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

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

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

การประทับเวลาที่ดำเนินการตามนโยบาย

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

ไม่บังคับ

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

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

ตัวแปร Flow

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

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

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

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