เปิดใช้การเรียกและการเพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 โดยใช้รหัสผู้ใช้ปลายทาง รหัสแอป หรือทั้งสองอย่าง

คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

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

กรณีที่ควรเปิดใช้การเข้าถึงรหัสผู้ใช้ปลายทาง

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

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

เกี่ยวกับโทเค็นการเข้าถึง OAuth

ระบบจะเพิ่มรหัสแอปลงในโทเค็นการเข้าถึง OAuth โดยอัตโนมัติ ดังนั้นหลังจากเปิดใช้สิทธิ์เข้าถึงด้วยโทเค็นสําหรับองค์กรตามที่อธิบายไว้ด้านล่างแล้ว คุณจะเพิกถอนโทเค็นการเข้าถึงตามรหัสแอปได้

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

โดยค่าเริ่มต้น เมื่อ Edge สร้างโทเค็นการเข้าถึง OAuth 2.0 โทเค็นจะมีรูปแบบดังที่แสดงด้านล่าง

{
 "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 มี UUID ของแอปที่เชื่อมโยงกับโทเค็น หากคุณเปิดใช้การเรียกข้อมูลและการเพิกถอนโทเค็นการเข้าถึง OAuth 2.0 ตามรหัสแอป รหัสแอปที่คุณใช้จะเป็นรหัสนี้
  • ช่อง access_token มีค่าโทเค็นการเข้าถึง OAuth 2.0

ไม่มีช่องสำหรับรหัสผู้ใช้ปลายทางในโทเค็นการเข้าถึง OAuth เริ่มต้น หากต้องการเปิดใช้การเรียกข้อมูลและการเพิกถอนโทเค็นการเข้าถึง OAuth 2.0 ตามรหัสผู้ใช้ปลายทาง คุณต้องกำหนดค่านโยบาย OAuth 2.0 ให้รวมรหัสผู้ใช้ไว้ในโทเค็นตามที่อธิบายไว้ในขั้นตอนด้านล่าง โปรดทราบว่าหากต้องการเรียกข้อมูลและเพิกถอนโทเค็นการเข้าถึง OAuth 2.0 ตามรหัสแอปเท่านั้น ก็ไม่จำเป็นต้องเปิดใช้การเข้าถึงตามรหัสผู้ใช้ปลายทาง

คุณจะส่งรหัสผู้ใช้ปลายทางไปยังปลายทางการสร้างโทเค็น คุณสามารถส่งรหัสของผู้ใช้ปลายทางเป็นพารามิเตอร์การค้นหา พารามิเตอร์แบบฟอร์ม หรือส่งในส่วนหัว (ตามที่อธิบายไว้ภายหลังในหัวข้อนี้) หลังจากกําหนดค่า Edge ให้รวมรหัสผู้ใช้ปลายทางไว้ในโทเค็นแล้ว รหัสดังกล่าวจะรวมอยู่ในช่อง 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"
}

หากต้องการดูวิธีเรียก API ที่ใช้ดึงข้อมูลและเพิกถอนเหล่านี้ โปรดดูเอกสารอัจฉริยะต่อไปนี้

การเปิดใช้การเข้าถึงโทเค็น OAuth 2.0 ตามรหัสผู้ใช้และรหัสแอป

วิธีเปิดใช้การเข้าถึงโทเค็น OAuth 2.0 ตามรหัสผู้ใช้และรหัสแอปจะขึ้นอยู่กับวิธีที่คุณติดตั้งใช้งาน Edge

  • การปรับใช้ในระบบคลาวด์

    การติดตั้งใช้งาน Edge ในระบบคลาวด์หมายความว่า Apigee จะจัดการการกําหนดค่าส่วนใหญ่ คุณมีหน้าที่รับผิดชอบในการกำหนดค่านโยบาย OAuth 2.0 เพื่อเพิ่มรหัสผู้ใช้ลงในโทเค็นการเข้าถึงเท่านั้น ดูข้อมูลเพิ่มเติมได้ที่กระบวนการด้านล่าง

  • การติดตั้งใช้งาน Edge สำหรับ Private Cloud

    ใน Apigee Edge สำหรับ Private Cloud (ในองค์กร) คุณมีหน้าที่รับผิดชอบในการกำหนดค่าโดยสมบูรณ์ ดูข้อมูลเพิ่มเติมได้ที่การดําเนินการและการกําหนดค่า

  • Apigee Hybrid

    ระบบจะเปิดใช้การเข้าถึงโทเค็น OAuth 2.0 ตามรหัสผู้ใช้โดยค่าเริ่มต้น คุณมีหน้าที่รับผิดชอบในการกำหนดค่านโยบาย OAuth 2.0 เพื่อเพิ่มรหัสผู้ใช้ลงในโทเค็นการเข้าถึงเท่านั้น ดูข้อมูลเพิ่มเติมได้ที่ขั้นตอนที่ 5 ด้านล่าง

การเปิดใช้การเข้าถึงในระบบคลาวด์

ขั้นตอนที่ 1: เปิดใช้องค์กรเพื่อรองรับฟีเจอร์นี้

คุณต้องเปิดใช้ฟีเจอร์นี้สำหรับแต่ละองค์กรที่ต้องการรองรับฟีเจอร์นี้

โปรดติดต่อทีมสนับสนุนของ Apigee Edge เพื่อขอให้อัปเดตองค์กร

ขั้นตอน 2: ให้สิทธิ์ทรัพยากร oauth2 แก่บทบาท opsadmin และ orgadmin

เฉพาะบทบาท orgadmin และ opsadmin เท่านั้นที่ควรได้รับสิทธิ์ในการเรียกใช้การดึงข้อมูล (get) และการเพิกถอน (put) ทรัพยากร oauth2 ตามรหัสผู้ใช้ปลายทางหรือรหัสแอป

คุณสามารถใช้การเรียก API Get Permission for a Resource เพื่อดูว่าบทบาทใดมีสิทธิ์ get และ put สำหรับทรัพยากร oauth2

หากต้องการเพิ่มหรือนำสิทธิ์ออก โปรดติดต่อทีมสนับสนุนของ Apigee Edge เพื่อขอให้ดำเนินการอัปเดต

ขั้นตอนที่ 3: คัดลอกโทเค็นการเข้าถึง OAuth 2.0 ที่มีอยู่ไปยังโหนด Cassandra

ดำเนินการโดยทีมสนับสนุนของ Apigee: ในขั้นตอนนี้ ระบบจะคัดลอกโทเค็นการเข้าถึง OAuth 2.0 ที่มีอยู่เดิมในองค์กรที่ได้รับผลกระทบและจัดเก็บไว้ในโหนด Cassandra ขั้นตอนนี้จะดำเนินการในโหนด Cassandra สำหรับแต่ละพ็อด Apigee Edge ซึ่งจะช่วยให้การเรียกข้อมูลและเพิกถอนการเรียก API ทํางานกับโทเค็นการเข้าถึง OAuth 2.0 ทั้งหมด ทั้งที่มีอยู่และที่สร้างขึ้นใหม่

ขั้นตอนที่ 4: กำหนดค่านโยบาย OAuth 2.0 เพื่อสร้างโทเค็นการเข้าถึงที่มีรหัสผู้ใช้ปลายทาง

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

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

นโยบาย OAuth 2.0 ด้านล่างชื่อ GenerateAccessTokenClient จะสร้างโทเค็นการเข้าถึง OAuth 2.0 โปรดสังเกตแท็ก <AppEndUser> ที่เขียนเป็นตัวหนา

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
  <DisplayName>OAuth 2.0.0 1</DisplayName>
  <ExternalAuthorization>false</ExternalAuthorization>
  <Operation>GenerateAccessToken</Operation>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse enabled="true"/>
  <GrantType>request.queryparam.grant_type</GrantType>
  <AppEndUser>request.header.appuserID</AppEndUser>
  <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

จากนั้นใช้คําสั่ง cURL ต่อไปนี้เพื่อสร้างโทเค็นการเข้าถึง OAuth 2.0 โดยส่งรหัสผู้ใช้เป็นส่วนหัว appuserID

curl -H "appuserID:6ZG094fgnjNf02EK" /
  https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials /
  -X POST /
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNi87GYXFmP&client_secret=gk58jK5lIp943AY4'

ในตัวอย่างนี้ ระบบจะส่ง appuserID เป็นส่วนหัวคำขอ คุณส่งข้อมูลเป็นส่วนหนึ่งของคำขอได้หลายวิธี ตัวอย่างเช่น คุณอาจทำสิ่งต่อไปนี้แทนได้

  • ใช้ตัวแปรพารามิเตอร์แบบฟอร์ม: request.formparam.appuserID
  • ใช้ตัวแปรโฟลว์ที่ให้รหัสผู้ใช้ปลายทาง