2014-05-21 1 views
3

OAuth2 스펙이 암시 적 권한 부여 플로우에서 액세스 토큰을 리턴하기 위해 JSON 응답 모드를 정의하지 않는 이유가 궁금합니다. 이것과 스펙에 동의 할 시간이 없었기 때문입니까? 아니면 특정 보안 취약점을 열어 JSON 형식으로 액세스 토큰을 반환합니까? 그렇다면 JSON을 악의적 인 스크립트 태그로 반환하는 것이 ContentType 또는 요청의 RequestedWith 헤더를 확인하여 완화 될 수 있다고 생각하는 것이 흥미로울 것입니다.OAuth2 스펙이 암시 적 플로우에 대한 JSON 응답 모드를 정의하지 않는 이유는 무엇입니까?

액세스 토큰을 새로 고침해야하는 최신 자바 스크립트 응용 프로그램이 많이 있습니다. 보호 된 리소스에 대한 사용 권한이 자주 변경되는 경우 (예 : 특정 사용자가 자신이 소유 한 리소스에 대해 다른 사용자에게 사용 권한을 부여하는 경우) 일반적으로 필요합니다. 이 경우 보호 된 리소스에 액세스 할 때마다 액세스 토큰을 얻어야합니다.

현재 OAuth2 사양에는 조각 및 양식 게시 (초안)의 두 가지 응답 모드가 있습니다. 조각 응답을 사용하려면 사용자에게 친숙하지 않은 리디렉션이 필요합니다. 액세스 토큰을 부모 윈도우에 전달하는 자바 스크립트 코드를 콜백하는 숨겨진 iframe에 GET 메소드를 사용하여 양식을 게시하는 것도 가능합니다. 그러나 이것은 개발 관점에서 볼 때 오히려 해킹 된 접근법입니다.

보안을 손상시키지 않는다면 AJAX 요청을 통해 액세스 토큰을 JSON 형식으로 반환하는 것이 훨씬 깔끔할 것입니다.

답변

0

액세스 토큰이 암시 적 플로우의 공격자가 아닌 RP로 전달되도록하려면 리디렉션이 중요합니다.

Stack Overflow에 토큰을 JSON 형식으로 돌려 준 OAuth2 Implicit Grant가있는 REST API가있는 경우 내 웹 페이지 중 하나에 가서 트릭을 한 다음 공식 스택 인 것처럼 가장합니다. 세션에 액세스 토큰을 요청하는 오버플로 클라이언트 (로그인 한 상태)

SO 서버가 액세스 토큰을 사용하여 CORS를 통해 JSON 비트를 반환하면 나는 당신을 사칭 할 수 있으며 아무도 현명하지 못합니다.

이제 리디렉션을해야만한다고 가정하면 매개 변수를 JSON 토큰에 추가하고 쿼리 매개 변수에 추가 할 수 있습니다. 그러나 이미 쿼리/단편화 구문 분석을 수행해야하는 경우 클라이언트가 JSON 구문 분석을 수행하는 대신 쿼리/단편에서 매개 변수를 가져올 수도 있습니다.

+0

잠시 시간을내어 주시겠습니까? SO는 피해자이고 evil.com은 사용자가 속인 웹 사이트입니다. 사용자를 대신하여 evil.com에서 SO에게 SO를 요청하면 자격 증명을 사용하여 보내야합니다. 그렇지 않으면 요청 쿠키가 SO에 전송되지 않고 액세스 토큰이 반환되지 않습니다. 요청이 인증되지 않음). 또한 자격 증명을 사용하여 요청을 보내면 SO는 액세스 제어 허용 원점에서 evil.com을 명시 적으로 허용 목록에 추가해야합니다. 예,

관련 문제