Авторизуйтесь через Google для asp. net основного API - PullRequest
0 голосов
/ 06 апреля 2020

Я создал SPA с angular, который использует angularx-social-login для входа в Google. Теперь я хотел бы пройти аутентификацию на основе моего asp. net основного API. Всякий раз, когда я вызываю конечную точку API, требующую аутентификации, я возвращаю HTTP 302, который перенаправляет на страницу входа в Google (которая не будет работать с API).

То, что я до сих пор делал на стороне пользовательского интерфейса:

  1. вход в систему: this.authService.signIn(GoogleLoginProvider.PROVIDER_ID);
  2. получение пользователя: this.authService.authState.subscribe((user:SocialUser) => this.user = user);
  3. сделать запрос на сервер:

    let headers = new HttpHeaders({
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + this.user.authToken
    });
    
    this.http.get('/api/secret', { headers: headers }).subscribe(success => { ... })
    

На стороне сервера:

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    // ...

    services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = GoogleDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;
    }).AddGoogle(options =>
    {
        options.ClientId = "... client id ...";
        options.ClientSecret = "... client secret ...";
    });
}

public void Configure(...) 
{
    // ...
    app.UseAuthorization();
}

А в контроллере:

[Authorize]
[HttpGet("/api/secret")]
public string GetSecret()
{
    return "secret";
}

Что я делаю не так? Почему меня перенаправляют на страницу входа в Google?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...