簡體   English   中英

在每個API請求上重新生成JWT承載令牌

[英]Regenerate JWT bearer token on each API request

我想在對服務器發出的每個請求上重新生成承載令牌。

我不想為此使用刷新令牌。

有人可以建議我如何從通過授權標頭傳遞的先前生成的令牌中重新生成帶有新的過期標記的新令牌?

每次發出API請求之前,都要調用授權服務器的令牌端點。

我創建了一個從DelegatingHandler類繼承的MessageHandler過濾器,並重寫了SendAsync方法。

我可以訪問從請求中收到的原始承載令牌,可以對其進行解碼並生成一個新令牌。 生成新的API之后,我將其轉儲到響應中,這樣它將在每個請求上執行,並且我們不需要管理單獨的API

        string audienceId = Properties.Settings.Default.AudienceId;
        var issuer = Properties.Settings.Default.AngularHostURL;
        string symmetricKeyAsBase64 = Properties.Settings.Default.AudienceSecret;

        DateTime IssuedUtc = DateTime.UtcNow;
        DateTime ExpiresUtc = 
        IssuedUtc.AddMinutes(Properties.Settings.Default.TokenLifetimeInMinutes);
        var keyByteArray = TextEncodings.Base64Url.Decode(symmetricKeyAsBase64);
        var signingKey = new HmacSigningCredentials(keyByteArray);

        var identity = new ClaimsIdentity("JWT");

        foreach (var claim in claims)
            identity.AddClaim(claim);

        var tokennew = new JwtSecurityToken(issuer, audienceId, identity.Claims, 
        IssuedUtc, ExpiresUtc, signingKey);
        var handler = new JwtSecurityTokenHandler();
        var jwt = handler.WriteToken(tokennew);

        return jwt;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM