[英]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.