2014-12-04 1 views
1

OAuth2 Token Endpoint에 요청을 보내면 응답은 JSON 형식이어야한다. 그러나 Spring Security를 ​​사용할 때 이상한 일이 발생합니다. 확실히, 오류는 내 코드에 없으며, 데모 앱 Sparklr2를 사용하여 다음을 테스트했습니다. 문제는 내가 사용하는 사용자 에이전트에 따라 결과가 다르다는 것입니다. 내가 곱슬 곱슬 사용하는 경우다른 사용자 에이전트에서 HTTP 응답이 다른 이유는 무엇입니까? (Spring Security OAuth2 Token Endpoint)

내가 URL을 액세스 http://localhost:8084/sparklr2/oauth/token

, 고급 REST 클라이언트, 텔넷 또는 유사한 결과는 예상대로입니다 :

{"error":"unauthorized","error_description":"Full authentication is required to access this resource"} 

내가 그러나 사용자가 파이어 폭스 나 크롬 내가 얻을 경우 XML 형식의 답변 :

<oauth><error_description>Full authentication is required to access this resource</error_description><error>unauthorized</error></oauth> 

왜이 이상한 행동이 발생합니까?

+0

Spring은 아마도 Accept 헤더를 존중합니다. Btw 나는 이것을 발견했다 - https://tools.ietf.org/html/draft-richer-oauth-xml-01#section-4.1. –

+0

맞아. Accept : application/xml을 사용하면 Firefox/Chrome에서와 같은 대답을 얻을 수 있습니다. 이 행동이 옳은지 궁금합니다. 그러나 어쨌든, 클라이언트가 xml 응답을 요구하지 않을 것이기 때문에 정말로 중요하지 않습니다. 브라우저에서 처음 시도 할 때 잘못 보았는지 궁금합니다. – Misch

+0

@PavelHoral 편집 된 댓글 : 오, 나는이 초안에 대해 몰랐다. 그래서 결국 모든 잘못된 행동을 봄으로 비난 할 수는 없다. 귀하의 코멘트를 대답으로 바꾸면 받아 들일 것입니다. – Misch

답변

1

봄은 아마도 Accept 헤더를 존경합니다. 브라우저는 보통 application/xml을 허용 된 형식으로 보냅니다. REST 클라이언트에는 보통 application/json이 포함됩니다. CURL은 아무 것도 보내지 않고 (당신이 정의하지 않는 한), Spring은 JSON을 선호한다.

형식 자체에 대해서는 이걸 발견했습니다 - http://tools.ietf.org/html/draft-richer-oauth-xml-01#section-4.1.