簡體   English   中英

如何在Azure函數中對JWT令牌進行身份驗證

[英]How to authenticate jwt token in azure function

嗨,我有一個azure函數,我試圖從jwt令牌中獲取用戶的當前ID。

我目前正在從對我來說有意義的標題中讀取它,但是我擔心我可能沒有遵循最佳實踐。

同樣,第一行對我來說似乎有些拙劣。

你們可以看看它,並建議我如何改善它。

還是這完全是錯誤的方法?

[FunctionName(nameof(GetDates))]
public static async Task<IActionResult> Run(

[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "dates")]HttpRequest req, ILogger logger, [Table("Date")] CloudTable table

            )

        {

            var token = req.Headers["Authorization"][0].Replace("Bearer ", string.Empty);



            var handler = new JwtSecurityTokenHandler();

           var jtToken = handler.ReadJwtToken(token);



            var userId = jtToken.Payload["Id"].ToString();

從您的代碼中看來,您只是從jwt令牌有效負載中讀取了索賠值,但尚未驗證jwt令牌。

通常,Jwt令牌由三部分組成:標頭,有效載荷,簽名。

Header - Provides information about how to validate the token including information about the type of token and how it was signed.

Payload - Contains all of the important data about the user or app that is attempting to call your service.

Signature - Is the raw material used to validate the token.

每個部分都基於64編碼,並用“。”分隔。 在jwt中,您可以在此處解析jwt以檢查其Header和Payload: https : //jwt.io/

簽名由標頭和有效內容組成,並用身份提供者(由其發行此jwt)的私鑰進行簽名。

如果要驗證jwt,您應該做的工作是從身份提供者那里獲取公共密鑰,並使用該公共密鑰來解鎖簽名部分:您將獲得Header和Payload的明文值。 如果jwt的Header和Payload的內容與您從Signature部分解鎖的內容完全相同,則意味着此令牌是經過驗證的令牌。

這是有關如何從Azure AD驗證jwt的文章 ,它認為它將對您有所幫助。 如果您還有其他疑問,請隨時告訴我。

暫無
暫無

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

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