내 사이트에 OpenID 인증을 구현하려고합니다. 여기에 시나리오는 다음과 같습니다
나는 사용자가 (. 바로 오픈 ID 공급자를 방문하여 확인하지 얻을 수있는 이메일 암호를 사용하여 사용자 정의 계정을 생성 할 필요 사용자),필요한 OpenID 정보 저장
- 로그인 그냥 오픈 아이디를 사용 할 수있게하려면
- 이메일/패스워드를 통해 (사용자가 양식을 작성하여 사이트에 등록)
- 오픈 아이디를 계정에 첨부하십시오 (하나의 계정에 대해 openids + 이메일).
이제 공개 ID로 저장할 자격 증명을 알 수 없습니다. DB 스키마에 대해 확실하지 않습니다. 다음은 데이터베이스 스키마가있다 :
Table: Users
UserId => PK
... => Custom info. Not related to authentication.
Table: Authentication
AuthenticationId => PK
LoginId => (when custom site membership => email address) (when openId => openid unique address)
UserId => FK to Users.
Provider =>(when custom site membership => "CUSTOM") (when openId => openid provider address)
Password => filled when using custom membership. empty when using open id.
을 이제 사용자가 여부를 오픈 ID/사용자 지정 멤버 자격을 사용하여 로그인 할 때, 난 그냥 인증 테이블을보고 자격 증명을보고 적절한 사용자를 얻을. 사용자가 없으면 새 사용자를 만들고 인증 테이블에 항목을 추가합니다.
주요 질문 :
Provider
및LoginId
오픈 ID 인증을 저장하기위한 충분한 (이 필드에 저장되는 것을 볼 수 위의 설명 참조)에 저장되어 있습니까? 사용자가 반환 할 때 저장된 데이터를 기반으로 사용자를 인증 할 수 있도록 추가 데이터를 저장해야합니까?이것을 구현하는 다른 (더 효율적인) 방법을 제안 하시겠습니까?
감사합니다.
'Provider' 컬럼을 제거하고'bit' 타입의'IsOpenId'를 추가했습니다. 인증 테이블을 분리하는 방법은 무엇입니까? (openid 및 custom 용) [openid 인증을 위해 불필요한'Password' 열을 제거하는 대신에]? – Kamyar
나는 당신을 위해 나의 대답을 강화했습니다. –
완벽! 감사. – Kamyar