2013-06-30 3 views
3

저는 궁금합니다. client_secret을 Google/FaceBook/다른 OAuth 2.0 제공 업체의 '비밀'장소에 보관해야합니까? 멀리 볼 수있는 한, 매우 제한적인 콜백 URL을 지정하자마자 client-secret 매개 변수로 할 수있는 일은 거의 없습니다.OAuth 2.0 - 클라이언트 비밀이 "비밀"인가?

예를 들어 github/bitbucket/etc에 'secret'키를 넣어서 공개 라이브 웹 프로젝트의 저장소로 사용하는 것이 안전합니까?

내가 아는 한 client-secret는 google/facebook의 개발자 계정과 공통점이 없으므로 hjacking 또는 스푸핑에 사용할 수 없습니다.

내가 누락 된 항목이 있습니까? 감사!

+1

조합 app_id | app_secret는 FB 앱용 앱 액세스 토큰으로 작동하므로 한 번 내가 할 수있는 모든 사항을 알게되면 앱이 허용 할 수있는 권한이 있습니다. 이유는 '비밀'이라고합니다. – CBroe

+0

CBroe ok, 비밀 토큰으로 정확히 무엇을 할 수 있는지 말해주십시오. 이는 리디렉션 URL에 지정된 사용자 토큰에만 유용하며 변경할 수 없습니다. – jdevelop

답변

0

가능한 한 비밀로 유지하십시오.

웹 응용 프로그램의 경우 비밀로 유지하는 것이 중요합니다. 전체 흐름의 보안은 이에 의존합니다.

네이티브 앱의 경우 최선을 다하십시오. 바이너리에서 항상 리버스 엔지니어링 할 수 있지만 경우에 따라 사소하지 않을 수도 있습니다. 가능하다면 github 등에 평범하지 마십시오. 빌드 프로세스의 일부로 추가 할 수 있습니다.

+0

하지만 왜? 그 '비밀'토큰으로 무엇을 할 수 있는지 보여 주실 수 있습니까? – jdevelop

+0

사용자에게 새로 고침 토큰을 저장하는 경우 사용자의 액세스 토큰을 얻으려면 client_secret + 새로 고침 토큰이 필요합니다. 클라이언트 새로 고침 토큰을 저장하는 데이터베이스가 손상된 경우 client_secret을 가능한 비밀로 유지하면 손상이 없습니다. 설치된/네이티브 앱의 경우에는 할 수있는 일이 많지 않지만 웹 앱의 경우 이는 좋은 보안 관행입니다. – aeijdenberg

+0

또한 누군가가 client_secret을 얻은 경우 앱을 사칭하고 사용자에게 승인을 요청하며 앱의 평판을 피우면 사용자가 인증 할 가능성이 커집니다. –