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