J’essaie d’utiliser JWT pour authentifier une application Node auprès d’une API Web ASP.NET.
Dans ASP.NET, j’utilise .NET 4.5.1 et le package System.IdentityModel.Tokens.Jwt
5.0.0
Ce que je ne comprends pas, c’est pourquoi les espaces de noms sont mélangés entre Microsoft
et System
.
Par exemple:
var tokenReader = new JwtSecurityTokenHandler(); tokenReader.ValidateToken(token, new TokenValidationParameters() { ValidateAudience = false }, out validatedToken);
Le JwtSecurityTokenHandler
principal JwtSecurityTokenHandler
trouve dans l’espace de noms System.IdentityModel.Tokens.Jwt
, mais la classe TokenValidationParameters
et ses dépendances se trouvent dans l’espace de noms Microsoft.IdentityModel.Tokens
et peuvent éventuellement entrer en collision avec des classes similaires dans les noms.
Est-ce intentionnel ou est-ce un signe possible d’une non-concordance de version ailleurs?
Si vous jetez un oeil à la dépendance pour
nuget System.IdentityModel.Tokens.Jwt 4.0.2
contre
nuget System.IdentityModel.Tokens.Jwt 5.0
vous verrez que 5.0 a une dépendance sur
Les dépendances
.NETFramework 4.5.1
Microsoft.IdentityModel.Tokens (> = 5.0.0)
que 4.0 n’a pas eu. En fait, aucune version précédente ne l’a fait.
Microsoft ré-architecte leurs frameworks pour qu’ils soient plus légers. Dans un framework de la taille de ASP.NET, vous aurez de nombreuses redondances fonctionnelles.
Pour rendre WIF plus léger, tout en restant compatible avec les versions antérieures, il a été décidé de supprimer les fonctionnalités redondantes de bibliothèques telles que System.IdentityModel.Tokens.Jwt
ne dépendent plus de System.IdentityModel.Tokens
, mais plutôt de Microsoft.IdentityModel.Tokens
. L’un des résultats regrettables est que les deux couches exposent les mêmes méthodes.
Dans ces cas, lorsque vous par exemple, vous devez fournir l’espace de noms complet pour indiquer au compilateur la classe et l’espace de noms que vous référencez. Donc, vous éviterez les conflits.
Microsoft.Identity est obsolète dans NET 4.5. Et vous pouvez en voir plus ici: https://social.msdn.microsoft.com/Forums/vstudio/en-US/256c6bcd-6752-4487-b2e8-6c63f4efb9e9/difference-between-microsoftidentitymodel-and-systemidentprog