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

  • ใช้ 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

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ 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 บิต (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>

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