วิธีที่ถูกต้องในการตั้งค่าการหมดอายุของโทเค็นการเข้าถึงใน Implicit Flow ใน IdentityServer4 คืออะไร

ฉันได้ลองตั้งค่าคุณสมบัติ AccessTokenLifetime สำหรับไคลเอนต์โดยนัยของฉันให้เป็น 90 วินาที ไคลเอนต์เป็นแอปพลิเคชันจาวาสคริปต์

อย่างไรก็ตาม ไคลเอ็นต์ยังคงสามารถเข้าถึงขอบเขต api "api1" ได้ประมาณ 5 นาทีหลังจากที่โทเค็นควรหมดอายุ

นี่คือรหัสสำหรับการกำหนดค่าไคลเอนต์ใน IdentityServer4:

// JavaScript Client
            new Client
            {
                ClientId = "js",
                ClientName = "JavaScript Client",
                AllowedGrantTypes = GrantTypes.Implicit,
                AllowAccessTokensViaBrowser = true,

                RedirectUris = { "http://localhost:5003/callback.html" },
                PostLogoutRedirectUris = { "http://localhost:5003/index.html" },
                AllowedCorsOrigins = { "http://localhost:5003" },

                AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    "api1"
                },
                AccessTokenLifetime = 90
            }

ฉันใช้โซลูชันการเริ่มต้นอย่างรวดเร็วของ Javascript จาก IdentityServer github repo ที่นี่ https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts/7_JavaScriptClient


person user1651370    schedule 07.03.2018    source แหล่งที่มา


คำตอบ (1)


มีปัญหานาฬิกาในมิดเดิลแวร์ตรวจสอบ Microsoft JWT โดยค่าเริ่มต้นจะตั้งไว้ที่ 5 นาทีและต้องไม่ต่ำกว่านี้ มิฉะนั้น - อายุการใช้งานที่แนะนำของโทเค็นการเข้าถึงคือ as short as possible โดยเฉพาะอย่างยิ่งในไคลเอนต์ฝั่งไคลเอ็นต์ ซึ่งคุณกำลังเปิดเผยมันไปยังเบราว์เซอร์ ดังนั้นทางออกที่ดีที่สุดของคุณ - ปล่อยไว้เป็นค่าเริ่มต้น (300 วินาที/5 นาที)

ตรวจสอบหัวข้อนี้ - มีการพูดคุยที่ดีเกี่ยวกับเรื่องนี้

person m3n7alsnak3    schedule 07.03.2018