문제

사용자가 내 사이트에서 계정을 만드는 것을 피할 수 있도록 내 사이트의 인증 시스템에 Google 및 Yahoo의 OpenID 끝점을 최근에 구현했습니다. 꽤 일반적인 연습, 오른쪽?

나는 특정한 질문을 가지고 있지만, 먼저 약간의 배경 정보가 있습니다.

3 다리 인증을 통과하면 속성 교환을 사용하여 사용자의 이름과 전자 메일 주소를 가져옵니다. 현재, 나는 그들의 OpenID ( https://me.yahoo)를 저장하고 있습니다. COM / A / 2Z7LPLQSNI_DGTAW (... 영숫자의 숫자) 사용자 테이블의 특수 필드에 있습니다.

내 사용자 테이블이 다음과 같이 보입니다.

type  id  password                          email             key
1     1   0e9212587d373ca58e9bada0c15e6fe4  test@example.com
2     1   b8d2f4a50d2b364ff2766556ba50da48  me@gmail.com      https://www.google.com/accounts/o8/id?id=AItOawll6-m_y…
2     2   6687d5d88b359ee1340717ebf0d1afc6  you@gmail.com     https://www.google.com/accounts/o8/id?id=AItOawm3-C_9…
3     1   fd193c2fa449c9d6dc201d62d5ca86d3  him@yahoo.com     https://me.yahoo.com/a/2Z7LplQsnI_DgtAw…
1     2   2e710b13b3dd787e2b15eab3dde508c2  person@site.com

types
1 = native account
2 = Google OpenID
3 = Yahoo OpenID
.

사용자가 기본 계정으로 로그인하면 전자 메일 및 암호가 인증하는 데 사용됩니다 (DUH).

사용자가 Google 또는 Yahoo OpenID를 사용하면 OpenID (키 필드)가 인증하는 데 사용됩니다.

이제는 모든 배경 정보가 방해가되지 않아 ... 은 OpenID 자체를 저장하는 것을 잊어 버리고 특성 교환에서 돌아 오는 이메일을 사용하여 사용자를 인증하기 만하면됩니다. 누군가가 OpenID 거래의 세 번째 다리를 스푸핑 할 수 있습니까?

도움이 되었습니까?

해결책

이러한 의도적 인 프로토콜의 의도적 인 깨질 수는 장기적으로 주요한 두통을 일으킬 것입니다.예를 들어 사용자가 사용자 지정된 OpenID 서버를 사용하여 사용자가 로그인하는 경우를 고려하십시오. @ gmail.com 이메일 주소를 제공합니다.

OpenID 인증 교환이 ID URL 이후에 절대적으로 일관되고 안정적으로 보장되는 유일한 정보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top