J'utilise la bibliothèque Azure Mobile Services et tente de créer un fournisseur d'identité personnalisé. Je cours le serveur dans Azure. J'ai créé un contrôleur de connexion personnalisé qui émet des JWT après une connexion réussie, mais les JWT générés ne sont pas valides (la signature ne valide pas sur jwt.io (en utilisant la clé de signature de Kudu) et le serveur rejette les jetons comme non valides authentifier). Le code côté serveur est ci-dessous:Connexion de services mobiles Azure Jwt Invalide
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,
}
);
}
Je authentification activée sur le service App Azure et je l'ai confirmé par le débogage à distance que la clé de signature est correcte. Y a-t-il quelque chose que je fasse de mal dans mon contrôleur ou ma configuration qui rendrait le jwt invalide?
AppServiceLoginHandler.CreateToken() est une fonction fournie par Microsoft dans la bibliothèque d'authentification Azure Mobile Services. – GregoryComer
En outre, l'ID de client hébergé est une valeur spécifique à l'utilisateur utilisée pour l'authentification. Pour autant que je sache, je peux définir la valeur de la revendication du sujet à une valeur spécifique à l'application, correct? Il est utilisé pour suivre le locataire authentifié pour le jwt. CreateToken() renvoie un JwtSecurityToken, qui gère tout le chiffrement. – GregoryComer