Авторизация JWT .NET Core 2.0 с угловым возвратом всегда несанкционирован (HTTP 401) - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь аутентифицировать пользователя 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, но мне нужно только передать токен получения. не могу понять, где я иду не так.

1 Ответ

0 голосов
/ 30 мая 2019

Убедитесь, что у вас в контроллере есть AuthenticationSchemes, как это

[Authorize(AuthenticationSchemes = "Bearer")]
[Route("api/[controller]/")]
public class AssetController : Controller

Также убедитесь, что у вас есть токен в этой строке

var token = localStorage.getItem('token');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...