2016-10-28 3 views
0

의 OAuth 서버는 클라이언트 요청의 nonce, 하나가 지정되면이 같은 일이 최근 5 분 동안 사용되지 않았는지 확인하기 위해 확인해야합니다.nonce가 이미 사용 된 경우 출력 할 OAuth 오류 코드는 무엇입니까? (공급자를 연결 열기 ID 포함)

이 모든 것이 의미가 있습니다. 그러나 제 질문은 간단합니다. ?error=...에있는 서버는 이미 사용 된 것으로 확인되면 반환합니까?

나는 다스를 수행 정도 RFC에, 웹 검색, 일부 SDK 코드뿐만 오류가 반환되고 코드가 어떻게 될지 어디 찾을 수있다.

+0

? 오픈 ID 연결 사양 또는 OAuth를의 RFC에 명시된 명시적인 요구 사항이 없기 때문에 –

+0

나는, 서버와 클라이언트의 책임을 혼동 할 수있다. 어떤 사양도 실제로 "반복적 인 공격을 막기 위해 사용하는 것"이외에는 nonce와 어떤 관련이 있는지 말하지 않습니다. 이 점을 감안할 때, 서버가 짧은 논점에서 동일한 nonce를 두 번 발견하면 오류가 반환된다는 것이 합리적입니다. 생각? –

답변

1

넌 스는 공급자에 의해 생성 된 토큰의 클라이언트에 대한 재생 공격을 방지 할 수있다. 클라이언트는 공급자가 토큰에 포함시킬 수 있도록 공급자에게 nonce를 보냅니다. 이것은 클라이언트가 공급자가 아닌 생산 한 nonce를 추적해야한다는 것을 의미합니다. 사실 오픈 ID 연결은 사양도 http://openid.net/specs/openid-connect-core-1_0.html#IDToken 말한다 :

[다른 토큰을 포함하여보다] 인증 서버 은 넌스 값에 다른 처리 그래서 오류 코드가 필요하지 않습니다

을 사용하지 수행해야합니다 공급자는 토큰에 포함시키는 것 이외의 다른 모든 것을 "수행"하지 않습니다. 이 요구 사항을 얻을 않았다 스펙/RFC 곳 /에서

+0

그 문구와 함께 나를 혼란스럽게 한 것은 *로 처리하는 것이 아니라 * 처리하는 것 이외의 다른 처리가 없다는 것입니다. 나는 그것이 주 (state) 매개 변수와 같다고 생각했다. 그러나이 경우 서버는 그걸로 뭔가를 할 수있다. 그렇지 않으면 왜 단지 상태에 nonce를 포함하지 않는 것일까? –

+0

난스 및 상태는 클라이언트가이'nonce' *를 포함한'state'의 *에서 원하는 무엇이든 포함 할 수 –

+0

이해 서로 다른 클라이언트 측 용도로 사용하지만 서버가 그들에게 동일하게 취급하기 때문에 (예를 들어, 무시). 두 번째 넌스 등을 가질 수 있습니다. –

관련 문제