내 SPA 애플리케이션 (Aurelia 사용)이 ASP.NET Core 2 Web API를 호출합니다. Google OIDC 제공 업체를 통해 사용자를 인증하고 동일한 방법으로 웹 API를 보호해야합니다.SPA (Aurelia) + ASP.NET Core WebAPI + Google 인증
현재 클라이언트 (SPA) 측에서 사용자를 인증하고 ID 토큰 및 액세스 토큰을 검색 할 수 있습니다. 각 API 호출과 함께 헤더에 액세스 토큰을 보냅니다.
이제 토큰의 유효성을 검사하고 API에 대한 액세스를 허용하거나 거부하기 위해 서버 측을 처리하는 방법을 잘 모르겠습니다. 공식적인 문서에서 외부 로그인 공급자를 추가하는 방법을 따랐지만 서버 측 MVC 애플리케이션에서만 작동하는 것으로 보입니다.
이 작업을 수행하는 쉬운 방법이 있습니까?
예를 들어 IdentityServer4가이 시나리오를 지원할 수 있다고 생각하지만 너무 복잡해서 내가해야 할 일이있는 것처럼 보입니다. 결국 내 자신의 ID/권한 부여 서버가 필요하지 않습니다.
는 업데이트 :
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(o =>
{
o.Authority = "https://accounts.google.com";
o.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = "accounts.google.com",
ValidAudience = "xxxxxxxxxxxxx.apps.googleusercontent.com",
ValidateAudience = true,
ValidateIssuer = true
};
});
services.AddMvc();
}
을 그리고 Configure()
에 나는 app.UseAuthentication()
전화 : 미로슬라프 포포비치의 답변에 따라
는 ASP.NET 코어 2.0 내 구성은 다음과 같다.
이 설치를 사용할 때 오류 메시지가 표시됩니다. 토큰에 사용할 수있는 SecurityTokenValidator가 없습니다.
업데이트 2 : 나는 그것을 작동하게
. 서버 구성이 정확합니다. 문제는 id_token 대신 API에 access_token을 보냈다는 것입니다.
도움 주셔서 감사합니다. 나는 (2.0에 맞게) 코드를 시도했지만 서버가 "토큰에 사용할 수있는 SecurityTokenValidator가 없습니다."라는 메시지와 함께 실패합니다. 왜 SPA에서 게시하는 토큰이 Google에서 직접 제공되는지 확실하지 않습니다. –
원래 질문을 현재 코드로 업데이트했습니다. –
나는 당신이 그것을 일하게 만들었다는 것을 알았다. –