簡體   English   中英

Azure移動服務登錄Jwt無效

[英]Azure Mobile Services Login Jwt Invalid

我正在使用Azure移動服務庫並嘗試創建自定義身份提供程序。 我正在Azure中運行服務器。 我創建了一個自定義登錄控制器,該控制器在成功登錄后發出JWT,但生成的JWT似乎無效(簽名無法在jwt.io上驗證(使用Kudu的簽名密鑰),並且服務器在使用時拒絕令牌為無效進行身份驗證)。 服務器端代碼如下:

public TenantAuthController()
{
   _serviceContext = new MobileServiceContext();
   _signingKey = Environment.GetEnvironmentVariable("WEBSITE_AUTH_SIGNING_KEY");
   var website = Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME");
   _audience = $"https://{website}/";
   _issuer = $"https://{website}/";
}

[HttpPost]
public IHttpActionResult Post([FromBody] TenantLoginRequest request)
{
   if (string.IsNullOrEmpty(request.TenantName) || string.IsNullOrEmpty(request.Password)) return BadRequest();
   (var valid, var tenant) = ValidateAuthRequest(request);
   if (!valid) return Unauthorized();

   var claims = new[]
   {
      new Claim(JwtRegisteredClaimNames.Sub, $"{tenant.Id}")
   };

   var token = AppServiceLoginHandler.CreateToken(claims, _signingKey, _audience, _issuer, TimeSpan.FromDays(365)); // TODO Token refresh

   return Ok(
      new TenantLoginResponse
      {
         Tenant = tenant,
         Token = token.RawData,
      }
   );
}

我在Azure App Service上啟用了身份驗證,並且已通過遠程調試確認簽名密鑰正確。 我在控制器或配置中做錯什么會導致jwt無效嗎?

如果令牌不會在JWT.IO上解析,則它無效。 似乎您正在嘗試加密不是承載令牌的值。 從您的代碼看來,您似乎正在嘗試加密“租戶ID”。 租戶就像天藍色的訂閱名稱一樣,與令牌無關。

AppServiceLoginHandler.CreateToken()中有什么? 這是自定義代碼還是MSFT代碼? 看來這就是您的問題出處...

暫無
暫無

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

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