คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
Apigee Edge มอบเฟรมเวิร์ก OAuth 2.0 เพื่อ API ที่ปลอดภัย OAuth2 เป็นหนึ่งในการตรวจสอบสิทธิ์โดยใช้โทเค็นตามมาตรฐานแบบเปิดซึ่งได้รับความนิยมมากที่สุด รวมถึงแผนการให้สิทธิ์ แพลตฟอร์มนี้ช่วยให้แอปพลิเคชันไคลเอ็นต์เข้าถึง API ในนามของผู้ใช้ได้ การกำหนดให้ผู้ใช้เปิดเผยชื่อผู้ใช้และรหัสผ่าน
Apigee Edge ช่วยให้นักพัฒนาซอฟต์แวร์สร้างการเข้าถึงและ/หรือรีเฟรชโทเค็นได้ด้วยการใช้โทเค็นใดก็ตาม การให้สิทธิ์ OAuth2 ทั้ง 4 ประเภท ข้อมูลเข้าสู่ระบบของลูกค้า รหัสผ่าน implicit และ รหัสการให้สิทธิ์ - ใช้นโยบาย OAuthv2 แอปพลิเคชันไคลเอ็นต์ใช้โทเค็นเพื่อการเข้าถึงเพื่อใช้ API ที่ปลอดภัย โทเค็นเพื่อการเข้าถึงแต่ละรายการมีการหมดอายุของตนเอง ซึ่งตั้งค่าได้ในนโยบาย OAuthv2
คุณสามารถเลือกโทเค็นการรีเฟรชพร้อมกับโทเค็นเพื่อการเข้าถึงกับการให้สิทธิ์บางประเภท รีเฟรช ระบบจะใช้โทเค็นเพื่อการเข้าถึงใหม่ที่ถูกต้องหลังจากที่โทเค็นเพื่อการเข้าถึงเดิมหมดอายุ หรือ ถูกเพิกถอน นอกจากนี้ คุณยังตั้งเวลาหมดอายุของโทเค็นการรีเฟรชได้ในนโยบาย OAuthv2
แพทเทิร์นต้านนี้เกี่ยวข้องกับลายต้านของ การตั้งค่าระยะเวลาหมดอายุที่นาน สำหรับโทเค็น OAuth
ลาย Antipattern
การตั้งค่าไม่มีเวลาหมดอายุสำหรับโทเค็นการรีเฟรชในนโยบาย OAuthv2 ทำให้เกิดการสะสมโทเค็น OAuth และการใช้พื้นที่ดิสก์เพิ่มขึ้นบนโหนด Cassandra
ตัวอย่างต่อไปนี้นโยบาย OAuthV2 แสดงการกำหนดค่าที่ขาดหายไปสำหรับ
<RefreshTokenExpiresIn>
:
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <!--<RefreshTokenExpiresIn> is missing --> <SupportedGrantTypes> <GrantType>password</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
ในตัวอย่างด้านบน
- โทเค็นเพื่อการเข้าถึงได้รับการตั้งค่าด้วยเวลาหมดอายุที่ต่ำพอสมควรที่ 30 นาที
- ไม่ได้ตั้งวันหมดอายุของโทเค็นการรีเฟรช
- โทเค็นการรีเฟรชจะยังคงอยู่ในที่เก็บข้อมูล (Cassandra) ตลอดไป ซึ่งทำให้เกิดข้อมูล การสะสม
- คุณจะใช้โทเค็นการรีเฟรชที่สร้างโดยไม่มีวันหมดอายุได้โดยไม่มีกําหนดในการสร้างโทเค็นเพื่อการเข้าถึง
- หากการรับส่งข้อมูลไปยัง API นี้เท่ากับ 10 คำขอต่อวินาที ก็จะสร้างโทเค็นได้มากถึง 864,000 รายการ ใน 1 วัน
ผลกระทบ
- หากสร้างโทเค็นการรีเฟรชโดยไม่มีวันหมดอายุ จะเกิดผลกระทบหลักๆ 2 ประการดังนี้
- คุณจะใช้โทเค็นการรีเฟรชเมื่อใดก็ได้ในอนาคต หรืออาจจะเป็นเวลาหลายปีเพื่อรับสิทธิ์เข้าถึง โทเค็น ซึ่งอาจส่งผลกระทบด้านความปลอดภัย
- ระบบจะไม่ลบแถวใน Cassandra ที่มีโทเค็นการรีเฟรช การดำเนินการนี้จะทำให้มีการสะสมข้อมูลใน Cassandra
- หากไม่ได้ใช้โทเค็นการรีเฟรช เพื่อรับโทเค็นเพื่อการเข้าถึงใหม่ แต่สร้างโทเค็นการรีเฟรชและโทเค็นเพื่อการเข้าถึงใหม่แทน โทเค็นการรีเฟรชเก่าจะยังคงอยู่ใน Cassandra ด้วยเหตุนี้ ให้รีเฟรช โทเค็นจะสะสมต่อไปใน Cassandra การใช้งานดิสก์เพิ่มขึ้นและการบีบอัดที่หนักแน่นขึ้น และในที่สุดจะทำให้เกิดการอ่าน/เขียน เวลาในการตอบสนองใน Cassandra
แนวทางปฏิบัติแนะนำ
ใช้เวลาหมดอายุต่ำอย่างเหมาะสมกับโทเค็นการรีเฟรชและโทเค็นเพื่อการเข้าถึง โปรดดู แนวทางปฏิบัติแนะนำ สำหรับตั้งค่าการหมดอายุ เวลาในการรีเฟรชและโทเค็นเพื่อการเข้าถึง ตรวจสอบว่าได้ระบุการกำหนดค่าการหมดอายุสำหรับการเข้าถึงทั้ง 2 แบบแล้ว และรีเฟรชโทเค็นในนโยบาย โปรดดู เอกสารประกอบเกี่ยวกับนโยบาย OAuthV2 เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่านโยบาย
แนวทางปฏิบัติแนะนำสําหรับ Edge สําหรับลูกค้า Private Cloud โดยเฉพาะ
ส่วนนี้จะอธิบายแนวทางปฏิบัติแนะนำของลูกค้า Edge สำหรับ Private Cloud โดยเฉพาะ
ระบุการหมดอายุของโทเค็นการรีเฟรชเริ่มต้น
โดยค่าเริ่มต้น ถ้าไม่ได้ระบุการหมดอายุของโทเค็นการรีเฟรชในการกำหนดค่านโยบาย Edge สร้างโทเค็นการรีเฟรชโดยไม่มีวันหมดอายุ คุณสามารถลบล้างลักษณะการทำงานนี้ได้โดย ขั้นตอนต่อไปนี้
- แก้ไขหรือสร้างไฟล์ลบล้างการกำหนดค่าในโหนดตัวประมวลผลข้อความ
$APIGEE_ROOT/customer/application/message-processor.properties
ตรวจสอบว่าไฟล์นี้ ผู้ใช้apigee
สามารถอ่านได้ - เพิ่มบรรทัดต่อไปนี้ลงในไฟล์:
การตั้งค่านี้จะตั้งค่าการหมดอายุของโทเค็นการรีเฟรชเริ่มต้นเป็น 1 ชั่วโมงหากไม่มีการระบุไว้ในนโยบาย คุณเปลี่ยนแปลงมูลค่าเริ่มต้นนี้ได้ตามความต้องการทางธุรกิจconf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
- รีสตาร์ทบริการตัวประมวลผลข้อความดังนี้
apigee-service edge-message-processor restart
- ทำขั้นตอนข้างต้นซ้ำในโหนดตัวประมวลผลข้อความทั้งหมดทีละรายการ
แนวทางปฏิบัติแนะนำใน Cassandra
ลองอัปเกรด Apigee เป็นเวอร์ชันล่าสุดที่พร้อมใช้งานแบบสาธารณะ Apigee ยังคงดำเนินต่อไป เปิดตัวการแก้ไขและการเพิ่มประสิทธิภาพ ซึ่งจะมีการปรับปรุงและเพิ่มประสิทธิภาพการจัดการอย่างต่อเนื่อง ของโทเค็นภายใน Apigee ใน Apigee โทเค็นการเข้าถึงและการรีเฟรชจะจัดเก็บอยู่ใน Cassandra ภายในช่องว่าง “kms” คุณควรตรวจสอบว่ากลยุทธ์การย่อข้อมูล ตั้งค่าคีย์สเปซเป็นLeveledCompactionStrategy
แล้ว
คุณควรตรวจสอบว่ามีดัชนีต่อไปนี้ไม่อยู่
- kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx#f0f0f0 และ
- kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx
นอกจากนี้คุณยังสามารถลด
gc_grace_seconds
ในตาราง kms.oauth_20_access_tokens
จากค่าเริ่มต้น 10 วันไปเป็นค่าที่ต่ำกว่า
(เช่น 3 วัน) เพื่อให้แน่ใจว่า Tombstone ที่สร้างขึ้นเนื่องจากมีการลบโทเค็น
ลบถาวรออกจากพื้นที่เก็บข้อมูลเร็วขึ้น