Antipattern: กำหนดการหมดอายุที่นานสำหรับโทเค็น OAuth

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

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

Apigee Edge ช่วยให้นักพัฒนาซอฟต์แวร์สร้างการเข้าถึงและ/หรือรีเฟรชโทเค็นได้ด้วยการใช้โทเค็นใดก็ตาม การให้สิทธิ์ OAuth2 ทั้ง 4 ประเภท ข้อมูลเข้าสู่ระบบของลูกค้า รหัสผ่าน implicit และ รหัสการให้สิทธิ์ - ใช้นโยบาย OAuthv2 แอปพลิเคชันไคลเอ็นต์ใช้โทเค็นเพื่อการเข้าถึงเพื่อใช้ API ที่ปลอดภัย โทเค็นเพื่อการเข้าถึงแต่ละรายการมีวันหมดอายุแตกต่างกัน ซึ่งตั้งค่าได้ในนโยบาย OAuthv2

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

ลาย Antipattern

การตั้งค่าเวลาหมดอายุที่ยาวนานสำหรับโทเค็นเพื่อการเข้าถึงและ/หรือโทเค็นการรีเฟรชในนโยบาย OAuthv2 ทำให้เกิดการสะสมโทเค็น OAuth และการใช้พื้นที่ดิสก์เพิ่มขึ้นบนโหนด Cassandra

ตัวอย่างต่อไปนี้นโยบาย OAuthV2 แสดงโทเค็นการรีเฟรชที่ใช้เวลานาน 200 วัน

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

ในตัวอย่างด้านบน

  • โทเค็นเพื่อการเข้าถึงมีการตั้งค่าด้วยเวลาหมดอายุที่น้อยกว่า 30 นาทีพอสมควร
  • โทเค็นการรีเฟรชได้รับการตั้งค่าโดยมีเวลาหมดอายุที่นานมากเท่ากับ 200 วัน
  • หากการรับส่งข้อมูลไปยัง API นี้คือ 10 คำขอ/วินาที จะสามารถสร้างโทเค็นได้มากถึง 864,000 รายการ ใน 1 วัน
  • เนื่องจากโทเค็นการรีเฟรชจะหมดอายุหลังจาก 200 วันเท่านั้น โทเค็นเหล่านี้จะยังคงอยู่ในที่เก็บข้อมูล (Cassandra) เป็นเวลานาน ซึ่งจะนำไปสู่การสะสมอย่างต่อเนื่อง

ผลกระทบ

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

แนวทางปฏิบัติแนะนำ

ใช้เวลาหมดอายุที่เหมาะสมสำหรับการเข้าถึง OAuth และรีเฟรชโทเค็นโดยขึ้นอยู่กับ ด้านความปลอดภัย เพื่อให้ระบบลบข้อมูลออกถาวรอย่างรวดเร็ว เพื่อหลีกเลี่ยงการสะสม

ตั้งเวลาหมดอายุสำหรับโทเค็นการรีเฟรชให้ใช้งานได้นานขึ้นอีกนิด โทเค็นเพื่อการเข้าถึง เช่น หากตั้งค่าโทเค็นเพื่อการเข้าถึงไว้ที่ 30 นาที แล้วตั้งค่า 60 นาทีสำหรับ โทเค็นการรีเฟรช

ซึ่งมีประโยชน์ในการทำสิ่งต่อไปนี้

  • คุณมีเวลามากพอที่จะใช้โทเค็นการรีเฟรชเพื่อสร้างการเข้าถึงใหม่และรีเฟรชโทเค็นหลังจาก โทเค็นเพื่อการเข้าถึงหมดอายุแล้ว
  • โทเค็นการรีเฟรชจะหมดอายุในอีกสักครู่ และจะถูกลบถาวรอย่างทันท่วงทีเพื่อ เพื่อหลีกเลี่ยงการสะสม

อ่านเพิ่มเติม