Я создал SPA с angular, который использует angularx-social-login для входа в Google. Теперь я хотел бы пройти аутентификацию на основе моего asp. net основного API. Всякий раз, когда я вызываю конечную точку API, требующую аутентификации, я возвращаю HTTP 302, который перенаправляет на страницу входа в Google (которая не будет работать с API).
То, что я до сих пор делал на стороне пользовательского интерфейса:
- вход в систему:
this.authService.signIn(GoogleLoginProvider.PROVIDER_ID);
- получение пользователя:
this.authService.authState.subscribe((user:SocialUser) => this.user = user);
сделать запрос на сервер:
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?