<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      asp net core下 JWT 部分 密鑰生成錯誤(IDX10720)和 Claim 類型映射問題

      概述

      探討 JWT 簽發與驗證中的常見問題:密鑰生成錯誤(IDX10720)和 Claim 類型映射問題,提供解決方案與代碼示例,助你輕松避坑。

      踩坑詳情

      坑一: IDX10720 錯誤 - 無法為算法 'HS256' 創建 KeyedHashAlgorithm

      問題描述

      在項目中引入了Microsoft.AspNetCore.Authentication.JwtBearer (6.0.26) 由 6.0.25 升級,之前用于簽發 JWT Token 的代碼報錯:IDX10720: Unable to create KeyedHashAlgorithm for algorithm 'HS256'"

      問題代碼示例

      var credentials=GenerateCredentials(_options.Key);
      var header = new JwtHeader(credentials);
      var payload = new JwtPayload(_options.Issuer,_options.Audience,claim,notBefore,expoires);
      var token = new JwtSecurityToken(header, payload);
      var tokenHandler = new JwtSecurityTokenHandler();
      var jwtToken = tokenHandler.WriteToken(token);
      
      
      SigningCredentials GenerateCredentials(string key)
      {
           return new SigningCredentials(GenerateKey(key), SecurityAlgorithms.HmacSha256);
      }
      
      SecurityKey GenerateKey(string key)
      {
          return new SymmetricSecurityKey(MD5.HashData(Encoding.UTF8.GetBytes(str)));
      }
      

      問題原因

      Microsoft.AspNetCore.Authentication.JwtBearer(6.0.26) 版本依賴的下游包 Microsoft.IdentityModel.Protocols.OpenIdConnect(6.35.0) 對密鑰的生成方式進行了更嚴格的校驗,要求密鑰必須滿足特定算法的位數要求。

      使用 MD5 生成的密鑰長度不符合 HS256 算法的要求。

      具體下游包升級詳情

      Microsoft.AspNetCore.Authentication.JwtBearer  6.0.25 -> 6.0.26
          Microsoft.IdentityModel.Protocols.OpenIdConnect 6.10.0 -> 6.35.0
      

      解決方案

      根據項目情況,選擇以下方案之一:

      1. 降Microsoft.AspNetCore.Authentication.JwtBearer至6.0.25

      2. 使用SHA256 生成密鑰,滿足位數要求SHA256.HashData()

      相關資料

      https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/2072
      https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBearer/6.0.25#dependencies-body-tab
      https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBearer/6.0.26#dependencies-body-tab

      坑二: JwtRegisteredClaimNames.Sub類型映射問題

      問題描述

      在簽發 JWT Token 時使用了特定的 Claim 類型(如 JwtRegisteredClaimNames.Sub),但在使用 HttpContext.User.Claims 讀取時無法正確獲取。

      問題代碼示例

      var claim = new Claim(JwtRegisteredClaimNames.Sub,Id);
      
      // cant find 
      var claim = Httpcontext.User.Claims.FirstOrDefault(x=>x.Key == JwtRegisteredClaimNames.Sub);
      
      // you shold use like this to find
      var claim = Httpcontext.User.Claims.FirstOrDefault(x=>x.Key == ClaimTypes.NameIdentifier);
      
      

      問題原因

      JwtSecurityTokenHandler 默認會將一些標準的 JWT Claim 類型映射到 .NET 的 ClaimTypes。例如,JwtRegisteredClaimNames.Sub 會被映射為 ClaimTypes.NameIdentifier

      解決方案

      根據項目情況,選擇以下方案之一:

      1. MapInboundClaims 設置成false
      JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
      handler.MapInboundClaims = false;
      //or
      JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear()
      
      1. 使用自定義字段 映射
      var claim = new Claim("your_type",Id);
      var claim = Httpcontext.User.Claims.FirstOrDefault(x=>x.Key == "your_type");
      
      1. 使用 ClaimTypes.NameIdentifier來獲取被Mapping后的值
      var claim = Httpcontext.User.Claims.FirstOrDefault(x=>x.Key == ClaimTypes.NameIdentifier);
      

      相關資料

      https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/415

      https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/rel/6.25.0/src/System.IdentityModel.Tokens.Jwt/ClaimTypeMapping.cs

      posted @ 2025-03-10 19:00  jnzhcn  閱讀(134)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品不卡av在线播放| 久久无码人妻精品一区二区三区| 狠狠色狠狠色综合日日不卡| 亚洲日韩国产精品第一页一区| 丰满少妇高潮惨叫久久久| 日韩乱码卡一卡2卡三卡四| 亚洲国产欧美一区二区好看电影| 亚洲日韩精品无码一区二区三区| 亚洲丶国产丶欧美一区二区三区| 国产av永久无码天堂影院| 高清免费毛片| 亚洲中文字幕无码av在线| 在线视频一区二区三区色| 日本一区不卡高清更新二区| 久久精品无码鲁网中文电影| 国产老熟女国语免费视频| 美女胸18下看禁止免费视频| 极品蜜桃臀一区二区av| 国产精品区一区第一页| 依依成人精品视频在线观看 | 中文字幕亚洲综合久久综合| 久久国内精品自在自线观看| 免费又大粗又爽又黄少妇毛片| 黄色A级国产免费大片视频| 国产精品综合av一区二区| 国产精品久久一区二区三区| 欧美黑人巨大videos精品| 国产国产午夜福利视频| 亚洲欧美国产日韩天堂区| 激情综合网激情五月伊人| 久久99精品久久久久麻豆 | 亂倫近親相姦中文字幕| 久久精品国产99久久久古代| 国产成人剧情AV麻豆果冻| 欧美丰满妇大ass| 国产一二三四区中| 精品亚洲一区二区三区在线播放| 国产精品亚洲国际在线看| 日韩精品国产二区三区| 超碰自拍成人在线观看| 国产精品色三级在线观看|