Я попытался декодировать токен, используя auth0 / angular -jwt, сгенерированный из ASP. NET core API. но проблема заключается в том, что после декодирования имя токена и идентификатор не определены.
в методе действия при входе в систему
var userFromRepo = await _repo.Login(loginViewModel.Username, loginViewModel.Password);
if (userFromRepo == null)
{
return Unauthorized();
}
var claims = new[]
{
new Claim(ClaimTypes.Name,userFromRepo.Username),
new Claim(ClaimTypes.NameIdentifier,userFromRepo.Id.ToString())
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["AuthSettings:Key"]));
var token = new JwtSecurityToken(
issuer: _config["AuthSettings:Issuer"],
audience: _config["AuthSettings:Audience"],
claims: claims,
expires: DateTime.Now.AddDays(1),
signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
);
var tokenAsString = new JwtSecurityTokenHandler().WriteToken(token);
return Ok(new {
token = tokenAsString
});
в AuthService на стороне клиента
jwtHelper = new JwtHelperService();
decodedToken:any;
constructor(private _http: HttpClient) {}
login(model: any) {
return this._http.post("http://localhost:5000/api/auth/" + "login", model).pipe(
map((response: any) => {
debugger;
const user = response;
if (user) {
localStorage.setItem("token", user.token);
this.decodedToken = this.jwtHelper.decodeToken(user.token);
console.log(this.decodedToken);
}
})
);
}
после декодирования токена это возвращает объект, подобный
{http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name: "sasha", http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier: "1", exp: 1584513110, iss: "IssuerName", aud: "AudienceName"}
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name: "sasha"
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier: "1"
exp: 1584513110
iss: "IssuerName"
aud: "AudienceName"
__proto__: Object
}
Как прочитать эти значения имени или идентификатора имени