기존 웹 사이트 로그인 시스템을 사용하여 OpenID를 사용합니다
-
14-09-2020 - |
문제
사용자가 내 사이트에서 계정을 만드는 것을 피할 수 있도록 내 사이트의 인증 시스템에 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 이후에 절대적으로 일관되고 안정적으로 보장되는 유일한 정보입니다.