簡體   English   中英

如何從Azure API記錄jwt屬性?

[英]how to log jwt properties from azure apim?

我正在從APIM記錄各種上下文屬性。 可以從上下文變量中記錄的一類屬性是“ Jwt”,具有“算法”,“受眾”,“聲明”之類的屬性。 但是,當我嘗試從策略記錄這些屬性時,APIM返回以下錯誤:

“ IProxyRequestContext”不包含“ Jwt”的定義

我假設這是因為未為我的特定測試實例配置Jwt。 有沒有辦法讓我的記錄以此為條件? 就像是?:

如果Jwt存在於上下文中,則記錄Jwt.Algorithm

盡管Jwt未針對我的本地環境進行配置,但我認為它可能針對生產環境進行了配置,並且我的公司將對捕獲此信息感興趣。

上下文上沒有Jwt屬性。 但是,有AsJwt / TryParseJwt方法可以將字符串轉換為具有您提到的屬性的Jwt對象(算法等)。 因此,如果請求/響應的某些部分包含表示jwt的字符串,則可以在策略表達式中執行以下操作:

JsonConvert.SerializeObject(context.Request.Url.Query [ “JWT”] [0])

有一個選項可以解析Jwt並獲取算法

Jwt AsJwt(input: this string)

這將返回Jwt對象,其中包含以下值。

Algorithm: string

Audience: IEnumerable<string>

Claims: IReadOnlyDictionary<string, string[]>

ExpirationTime: DateTime?

Id: string

Issuer: string

NotBefore: DateTime?

Subject: string

Type: string

請找到下面的鏈接以了解更多詳細信息https://docs.microsoft.com/zh-cn/azure/api-management/api-management-policy-expressions

編碼的jwt將位於請求的Authorization標頭中。 AsJwt可以將該令牌解析為Jwt對象。 (搜索上下文變量 jwt

您的通話將如下所示:

context.Request.Headers.GetValueOrDefault("Authorization","").AsJwt()

訪問Jwt對象的屬性將如下所示:

context.Request.Headers.GetValueOrDefault("Authorization","").AsJwt()?.Algorithm

暫無
暫無

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

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