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

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

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

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

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

ลายป้องกัน

การตั้งค่าเวลาหมดอายุที่นานสำหรับโทเค็นเพื่อการเข้าถึงและ/หรือโทเค็นการรีเฟรชในนโยบาย 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 รายการต่อวัน
  • เนื่องจากโทเค็นการรีเฟรชจะหมดอายุหลังผ่านไป 200 วันเท่านั้น โทเค็นดังกล่าวจะยังคงอยู่ในพื้นที่เก็บข้อมูล (Cassandra) เป็นเวลานานเพื่อทำให้เกิดการสะสมอย่างต่อเนื่อง

มีอิทธิพล

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

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

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

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

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

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

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