2011-04-29 4 views
0

나는 자신의 로그인/등록 메커니즘 (PHP, 세션, 사용자 및 사용자 이름과 암호가있는 user_profile DB 테이블 등)이있는 웹 사이트를 운영합니다. 이것을 ABC 계정이라고합시다.트위터 로그인 통합 기존 웹 사이트 : 계정 병합 및 트위터 자격 증명 저장

Oauth를 사용하여 트위터의 로그인을 통합했습니다. 내 일반적인 로그인 양식 위에있는 "트위터를 사용하여 로그인"버튼으로 사용할 수 있습니다.

이제는이 시나리오가 있습니다.

사용자가 Twitter를 통해 로그온합니다. 트위터는 페이스 북과 달리 사용자의 이메일 주소에 대한 액세스를 허가하지 않기 때문에 트위터를 통해 로그인 한 사람이 내 사용자 테이블에있는 기존 사용자인지 여부를 알지 못합니다. 그래서 나는 그들 ("Twitter"계정이라고 부름)에 대해 새로운 계정을 만들고 "ABC"자격 증명을 입력하여 기존 "ABC"계정과 병합하도록 요청합니다. 그들이 그렇게하고 모든 것이 일치하면 나는 트위터 사용자 이름, ID 및 토큰을 ABC 계정의 DB 레코드에 저장합니다. 다음에 트위터를 통해 로그인하면 ABC 계정 (즉, 계정이 "병합"됨)에 따라 누구인지 알 수 있습니다. 모두 좋아요!

나는 대신 사이트에서 ABC를 통하지 않고 트위터 버튼을 통해 로그온하는 경우에만 권한이있는 트위터 연결이 필요하다는 것을 의미하는 대신 트윗을 보내도록하고 싶습니다. 계정. 그 이유는 후자의 경우 내가 서명 한 Twitter API 콜백에서받은 token_secret을 가지고 있지만 이전에는 그렇지 않다는 이유 때문입니다. 나의 첫 번째 생각은 물론 내 DB에 (이 ABC 계정 레코드와 함께)이 제한을 제거하는 token_secret를 저장하는 것이었지만 이것은 암호의 동등한 것 같습니다 그리고 그것은 비밀 성 구멍 수있는 저장?

다음과 같이 질문하십시오. oauth 토큰의 비밀을 DB에 저장하여 내가하고 싶은 일을 달성하는 것이 "표준"관행입니까 (현대 사이트에서는 꽤 표준적인 기능처럼 보입니다) ? . 그렇지 않은 경우 대안 구현은 무엇입니까?

업데이트 :보고 : Best practices - store Twitter credentials or not? 이것은 분명히 이 아니며의 '모범 사례'입니다. 하지만 내가 성취하려고하는 것은 ... 구현 방법을 모르겠다. 어쩌면 어떤 종류의 쿠키 기반 솔루션입니까 ??

피터

PS - 사람이 계정을 할 수있는 더 좋은 방법이 있다면 BTW, 나는뿐만 아니라 그것에 대해 공청회 것 설명 "병합". 나는이 문제가 내가 상상했던 여러 번 해결되었을 것이지만 약간의 구글 검색을했지만 정말 유용한 것을 찾지 못했다. ??? 내 이해는 페이스 북의 경우 전자 메일은 "유일하게"사용자를 식별 (즉, ABC 계정과 일치)하는 데 사용될 수 있으며 메시지를 표시하지 않고 병합을 수행 할 수 있습니다 (비록 이것이 완전히 안전하지는 않겠지 만?).

답변

1

OAuth 프로세스 중에 Twitter가 제공하는 토큰을 저장하는 것은 정확한 방법입니다. 어떻게해야하는지. 그들을 DB에 쏘아 라.

+0

Thx. 나는 간단하고 작동 할 것이기 때문에이 해결책을 좋아한다! 내 유일한 관심사는 그들의 "비밀"토큰이 비밀 번호와 동일하므로 암호화되지 않은 것을 저장하는 것은 보안 허점이 될 것이고 암호화하는 것은 양방향 일 것입니다. – PeterG

+0

비밀 토큰은 응용 프로그램 oauth 소비자 및 비밀 키와 함께 사용할 수 있기 때문에 보안 구멍이라고 생각하지 않습니다. – Keith