คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
Apigee Edge มีเฟรมเวิร์ก OAuth 2.0 เพื่อ รักษาความปลอดภัยของ API OAuth2 เป็นหนึ่งในรูปแบบการตรวจสอบสิทธิ์และการให้สิทธิ์แบบโอเพนสแตนดาร์ดที่อิงตามโทเค็นที่ได้รับความนิยมมากที่สุด ซึ่งช่วยให้แอปพลิเคชันไคลเอ็นต์เข้าถึง API ในนามของผู้ใช้ได้โดยไม่ต้อง ให้ผู้ใช้เปิดเผยชื่อผู้ใช้และรหัสผ่าน
Apigee Edge ช่วยให้นักพัฒนาแอปสร้างโทเค็นเพื่อการเข้าถึงและ/หรือโทเค็นการรีเฟรชได้โดยการใช้ประเภทการให้สิทธิ์ OAuth2 อย่างใดอย่างหนึ่งจาก 4 ประเภท ได้แก่ ข้อมูลเข้าสู่ระบบของไคลเอ็นต์, รหัสผ่าน, โดยนัย และ รหัสการให้สิทธิ์ - โดยใช้นโยบาย OAuthv2 แอปพลิเคชันไคลเอ็นต์ใช้โทเค็นเพื่อการเข้าถึงเพื่อใช้ API ที่ปลอดภัย โทเค็นเพื่อการเข้าถึงแต่ละรายการจะมีเวลาหมดอายุของตัวเอง ซึ่งสามารถตั้งค่าได้ในนโยบาย OAuthv2
ระบบอาจออกโทเค็นการรีเฟรชพร้อมกับโทเค็นเพื่อการเข้าถึงสำหรับประเภทการให้สิทธิ์บางประเภท โทเค็นการรีเฟรช ใช้เพื่อรับโทเค็นเพื่อการเข้าถึงใหม่ที่ถูกต้องหลังจากที่โทเค็นเพื่อการเข้าถึงเดิมหมดอายุหรือ ถูกเพิกถอน คุณยังตั้งเวลาหมดอายุสำหรับโทเค็นการรีเฟรชได้ในนโยบาย OAuthv2
รูปแบบที่ไม่แนะนำนี้เกี่ยวข้องกับรูปแบบที่ไม่แนะนำในการ ตั้งเวลาหมดอายุที่นาน สำหรับโทเค็น OAuth
รูปแบบที่ไม่แนะนำ
การไม่ตั้งเวลาหมดอายุสำหรับโทเค็นการรีเฟรชในนโยบาย 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 รายการ ต่อวัน
ผลกระทบ
- หากสร้างโทเค็นการรีเฟรชโดยไม่มีการหมดอายุ จะเกิดผลกระทบหลัก 2 ประการ ได้แก่
- โทเค็นการรีเฟรชจะใช้รับโทเค็นเพื่อการเข้าถึงได้ทุกเมื่อในอนาคต ซึ่งอาจเป็นเวลาหลายปี ซึ่งอาจส่งผลกระทบต่อความปลอดภัย
- ระบบจะไม่ลบแถวใน Cassandra ที่มีโทเค็นการรีเฟรช ซึ่งจะทำให้ข้อมูลสะสมใน Cassandra
- หากคุณไม่ใช้โทเค็นการรีเฟรช เพื่อรับโทเค็นเพื่อการเข้าถึงใหม่ แต่สร้างโทเค็นการรีเฟรชและโทเค็นเพื่อการเข้าถึงใหม่แทน โทเค็นการรีเฟรชเก่าจะยังคงอยู่ใน Cassandra ด้วยเหตุนี้ โทเค็นการรีเฟรช จะสะสมอยู่ใน Cassandra ต่อไป ซึ่งจะทำให้เกิดการขยายตัว การใช้ดิสก์เพิ่มขึ้น และการบีบอัดที่หนักขึ้น และในที่สุดจะทำให้เกิดเวลาในการตอบสนองในการอ่าน/เขียน ใน Cassandra
แนวทางปฏิบัติแนะนำ
ใช้เวลาหมดอายุที่สั้นอย่างเหมาะสมสำหรับทั้งโทเค็นการรีเฟรชและโทเค็นเพื่อการเข้าถึง ดู แนวทางปฏิบัติแนะนำ สำหรับการตั้งเวลาหมดอายุ ของโทเค็นการรีเฟรชและโทเค็นเพื่อการเข้าถึง ตรวจสอบว่าได้ระบุการกำหนดค่าการหมดอายุสำหรับทั้งโทเค็นเพื่อการเข้าถึง และโทเค็นการรีเฟรชในนโยบาย ดูรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่านโยบายได้ในเอกสารประกอบนโยบาย OauthV2
แนวทางปฏิบัติแนะนำสำหรับลูกค้า Edge for Private Cloud โดยเฉพาะ
ส่วนนี้อธิบายแนวทางปฏิบัติแนะนำสำหรับลูกค้า Edge for Private Cloud โดยเฉพาะ
ระบุการหมดอายุของโทเค็นการรีเฟรชเริ่มต้น
โดยค่าเริ่มต้น หากไม่ได้ระบุการหมดอายุของโทเค็นการรีเฟรชในการกำหนดค่านโยบาย Edge จะสร้างโทเค็นการรีเฟรชโดยไม่มีการหมดอายุ คุณสามารถลบล้างลักษณะการทำงานนี้ได้โดย ทำตามขั้นตอนต่อไปนี้
- ในโหนด Message Processor ให้แก้ไขหรือสร้างไฟล์การลบล้างการกำหนดค่า
$APIGEE_ROOT/customer/application/message-processor.propertiesตรวจสอบว่าผู้ใช้apigeeอ่านไฟล์นี้ได้ - เพิ่มบรรทัดต่อไปนี้ลงในไฟล์
การดำเนินการนี้จะตั้งค่าการหมดอายุของโทเค็นการรีเฟรชเริ่มต้นเป็น 1 ชั่วโมง หากไม่ได้ระบุไว้ในการกำหนดค่านโยบาย คุณสามารถเปลี่ยนค่าเริ่มต้นนี้ได้ตามความต้องการของธุรกิจconf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
- รีสตาร์ทบริการ Message Processor โดยใช้คำสั่งต่อไปนี้
apigee-service edge-message-processor restart
- ทำซ้ำขั้นตอนข้างต้นในโหนด Message Processor ทั้งหมดทีละโหนด
แนวทางปฏิบัติแนะนำใน Cassandra
ลองอัปเกรดเป็น Apigee เวอร์ชันล่าสุดที่เผยแพร่ต่อสาธารณะ Apigee จะเผยแพร่การแก้ไขและการปรับปรุงอย่างต่อเนื่อง ซึ่งจะช่วยปรับปรุงและเพิ่มประสิทธิภาพการจัดการโทเค็นภายใน Apigee ใน Apigee ระบบจะจัดเก็บโทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรชไว้ใน Cassandra ภายใน Keyspace "kms" คุณควรตรวจสอบว่าได้ตั้งค่ากลยุทธ์การบีบอัดของ Keyspace นี้เป็น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 ที่สร้างขึ้นเนื่องจากการลบโทเค็นออกจากที่เก็บข้อมูลได้เร็วขึ้น