0

OAuth2 인증 공급자에게 현재 탭을 여는 단일 페이지 앱이 있습니다. 사용자가 자격 증명을 입력하면 서버는 탭을 닫을 응답을 보냅니다. 서버는 클라이언트가 세션을 설정하여 인증되었음을 "인식"합니다.클라이언트가 http-bearer 토큰을 얻는 방법은 무엇입니까?

그러나 실제로 세션을 사용하고 싶지 않습니다. 나는 응용 프로그램을 무국적으로 유지하고 싶다. 나는 이것이 서버가 검증 할 수있는 oauth2 bearer 토큰을 사용하여 가능해야한다고 읽었습니다.

클라이언트는 어떻게 그러한 베어러 토큰을 얻을 수 있습니까? iframe 또는 탭을 사용하여 사용자가 서비스 제공 업체의 로그인 페이지에서 자격 증명을 입력 할 수 있으므로 자바 스크립트가 응답을받을 수 없습니다.

외부 공급자 (세션 없음)를 사용하는 OAuth2가 웹의 현재 클라이언트 - 서버 아키텍처에서 불가능하다는 사실입니까?

답변

1

일반 "액세스 토큰"과 반대되는 "Json Web Token"을 사용하려고 할 것입니다. JWT는 디지털 서명 된 이슈이므로 서버 (귀하의 API)가 그 (및 그 내용)의 유효성을 검사 할 수 있습니다.

단일 페이지 앱은 일반적으로 OAuth2 '암시 적'흐름을 사용합니다. 토큰 (JWT)은 권한 서 v에서 직접 수신되며, 이는 API 인증에 사용할 수있는 것입니다. 클라이언트 라이브러리는 최종 응답 (종종 http://callback/#id_token={the base64 encoded token} 형식의 URL)에서 JWT를 추출합니다.

사용중인 AuthZ 서버가 실제로 JWT를 반환 할 수 있는지 확인해야하며 서버에 API를 검증 할 수있는 토큰 핸들러 인 API를 호스트하십시오.

참고 : 웹 페이지와 API가 다른 도메인에있는 경우 CORS를 구성해야합니다. .NET WebApi 및 JWT를를 반환하는 인증 서버를 사용합니다 (예 ours을하지만, 누구와도 일할 수 있겠)이의 this example에서

봐.

관련 문제