2014-06-17 3 views
0

조각을 사용하여 리소스에 액세스하는 웹 환경이 있습니다. (예 : foo.com/#/my_resource).OAuth 리디렉션 조각이 손실 된 후

OAuth 2를 사용하여 인증을 내 서버에 추가하려고합니다. 그리고 pac4j로 Shiro 프레임 워크를 사용하고 있습니다. 여기에있는 문제는 공급자에 로그인 한 후 브라우저에서 해시가 손실되어 foo.com/#/my_resource 대신 foo.com/으로 리디렉션된다는 것입니다.

일반적인 문제 일 수 있다고 생각합니다. 이 문제를 해결할 수있는 방법이 있습니까? 이 행동이 예상됩니까?

감사합니다.

답변

1

조각이있는 URL에 요청을 제출하면 조각이 서버로 보내지지 않습니다. 이는 클라이언트 측 개념입니다. 따라서 서버는 URL로 리디렉션 할 수없고 원본 조각을 포함 할 수 없습니다.

또한 질문에서 분명하지 않지만 OAuth 2 요청의 redirect_uri 매개 변수로 사용하는 경우 의미는 explicitly forbids the use of a fragment in the value입니다.

+0

redirect_uri 매개 변수 내에서 조각을 보내지 않고 있으며 서버 측에서 OAuth를 처리하고 있습니다. 그래서 리다이렉트는 여러분이 말한 것처럼 해시에 대해 전혀 알지 못합니다. 하지만 브라우저는 내가 아는 한 리디렉션 중에 해시를 유지합니다. OAuth 제공 업체의 로그인 페이지로 리디렉션 될 때 브라우저에 적어도 조각이 남아 있습니다. 그러나 로그인 한 후에 다시 내 도메인으로 리디렉션되지만 조각은 손실됩니다. –

+0

리디렉션은 브라우저가 서버에서 보낸 완전히 다른 위치로 변경되도록 지시합니다. 서버가 어떤 정보인지 모를 때 왜 조각을 유지할 것이라고 기대합니까? 요청을 디버그하고 브라우저에 응답 (예 : 방화 럽 또는 크롬) 한 경우 무슨 일이 일어나는지 분명해야합니다. –

+0

잘못된 OAuth 워크 플로를 사용하고 있다고 생각합니다. 조각은 javascript 클라이언트에서 "암시 적 부여"시나리오 내에서 사용됩니다. 어쨌든 조각은 완전히 클라이언트 측 개념입니다. –

관련 문제