Я пытаюсь аутентифицировать пользователя Active Directory, используя MsAdalAngular6Service , то есть Библиотека аутентификации Active Directory Azure , которая аутентифицирует пользователя на стороне клиента с использованием токена носителя jwt.
Мой угловой код выглядит как
constructor(private adalSvc: MsAdalAngular6Service) {
var token = this.adalSvc.acquireToken('graphApiUri').subscribe((token) => {
localStorage.setItem('token', token);
});
}
GetUser() {
let httpOptions = {
headers: new HttpHeaders({
'Authorization': 'Bearer ' + localStorage.getItem('token'),
})
}
var token = localStorage.getItem('token');
return this._http.get(this.myAppUrl + 'api/Member/getuser', httpOptions)
.map((res: Response) => res.json())
}
}
здесь я использую токен захвата для аутентификации пользователя, и мой код файла startup.cs приведен ниже.
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Authority = "https://login.microsoftonline.com/6fa7661f-b743-4046-b913-06c1c48eb54e";
//options.Audience = "https://graph.microsoft.com";
options.TokenValidationParameters.ValidateLifetime = true;
options.TokenValidationParameters.ClockSkew = TimeSpan.Zero;
});
и действие моего контроллера такое, как показано ниже.
[Authorize]
[HttpGet]
[Route("getuser")]
public async Task<User> GetUserInfoAsync()
{
var token = Request.Headers["Authorization"].ToString();
}
но всякий раз, когда я вызываю это действие через angular, оно всегда возвращает неавторизованную ошибку 401.
токен получения всегда возвращает UnAutherize 401 , но когда я передаю токен доступа, он не показывает 401, но мне нужно только передать токен получения.
не могу понять, где я иду не так.