Google을 통해 OpenID Connect를 인증하기 위해 WebAPI 백엔드가있는 SPA (각형) 앱을 업그레이드하는 중입니다. 이상적으로 우리는 하이브리드 플로우를 사용하고자합니다.SPA + WebAPI 용 OpenID Connect 미들웨어
Google 로그인 버튼을 클릭하면 브라우저가 Google로 리디렉션되고 동의 화면이 표시되며 코드 및 ID 토큰으로 앱에 응답이 전송됩니다. 시나리오의 대부분은 거기 출판 보여 당신이 통지 인증 코드가 반환되는 화재와의 MVC 응용 프로그램 구성 방법 :
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = "",
MetadataAddress = "https://accounts.google.com/.well-known/openid-configuration",
RedirectUri = "https://localhost:44300/authentication",
Scope = "openid profile",
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthorizationCodeReceived = async n =>
{
우리의 경우 화재 결코 나는 응답이 전송되기 때문에 그 이유가 생각 다시 우리의 SPA로, 우리의 애플 리케이션의 서버 측 엔드 포인트로 돌아 가지 않습니다. 여기에 다음 단계는 무엇입니까?
- 클라이언트에서 코드를 수신하고 웹 토픽 레이어에 ajax 요청을 보내 액세스 토큰을 교환합니까? 액세스 토큰이 있으면 js에서 API 호출을 할 때 토큰이 유효한 것으로 인식되도록 사용자가 로그인되었음을 알리는 방법은 무엇입니까?
- 우리 웹 API 계층에 응답을 보내고, 액세스 토큰에 대한 코드를 교환하고, 마지막에 액세스 토큰을 포함하는 해시 조각으로 리디렉션 응답을 보냅니다. 알림 핸들러가 해당 인스턴스에서 실행됩니까?
두 경우 모두 OpenID 미들웨어에서 코드를 교환하기 위해 무엇을 활용할 수 있습니까? 게시물 요청은 굉장히 복잡해 보이지 않지만 가능한 경우 기존 라이브러리를 활용하면 좋을 것입니다.
감사합니다. Taiseer, OpenId Connect 암시 적 플로우와 함께이 미들웨어가 작동합니까? 액세스 토큰에 대해 나중에 교환되는 인증 코드와는 대조적으로 액세스 토큰을 즉시 얻게되면 범위 값과 암시 적 플로우를 기반으로하는 OpenId Connect 인 것으로 보입니다. – Tom
이것이 맞습니다. 외부 인증 토큰을 직접 가져올 것입니다. ** 인증 코드 흐름 **을 사용하고 있습니다. 이는 웹 서버와 웹 서버 간의 통신이며 클라이언트 (웹 API)가 Google 비밀을 안전하게 저장할 수 있기 때문에, 귀하의 고객은 기밀 클라이언트로 간주됩니다. –
@Tom이 당신을 위해이 작업을 했습니까? 도움이 더 필요하면 알려주세요. –