sled.com에서이 과정을 거쳤습니다. 계정 생성 및 로그인을위한 여러 타사 계정 지원과 관련하여 여기에는 여러 가지 문제가 있습니다. 그들 중 일부는 다음과 같습니다.
- 로컬 비밀번호와 타사 로그인을 모두 지원해야합니까?
sled.com의 경우, 작은 값이 추가되고 암호 입력 양식을 확보하는 데 드는 추가 비용으로 인해 로컬 암호를 삭제하기로 결정했습니다. 암호를 파기하는 알려진 공격이 많이 있으며 암호를 도입하려는 경우 암호를 해독하기 쉽지 않은지 확인해야합니다. 또한 누출 방지를 위해 단방향 해시 또는 이와 유사한 곳에 보관해야합니다.
- 여러 타사 계정을 지원할 때 어느 정도의 유연성을 원하십니까?
이미 Facebook, Twitter 및 LinkedIn의 세 가지 로그인 공급자를 선택한 것 같습니다. OAuth를 사용하고 잘 정의 된 신뢰할 수있는 공급자 세트와 함께 작업한다는 것을 의미하기 때문에 좋습니다. 저는 OpenID의 팬이 아닙니다. 나머지 질문은 동일한 공급자의 여러 타사 계정을 지원해야하는 경우입니다 (예 : 두 개의 트위터 계정이 연결된 로컬 계정 하나). 나는 아니오라고 가정하지만, 그렇게하면 데이터 모델에 수용해야합니다.
Sled의 경우 Facebook, Twitter 및 Yahoo! 각 사용자 계정 저장소에는 { "_id": "djdjd99dj", "yahoo": "dj39djdj", twitter : "3723828732", "facebook": "12837287"} 각각의 키가 있습니다. Google은 각 타사 계정을 단일 로컬 계정에만 연결할 수 있도록 여러 가지 제약 조건을 설정했습니다.
동일한 타사 제공 업체의 여러 계정을 허용하려는 경우 목록 또는 기타 구조를 사용하여이를 지원하고 고유성을 보장하기 위해 다른 모든 제한 사항을 사용해야합니다.
사용자가 처음으로 서비스에 가입하면 먼저 타사 제공 업체로 가서 확인 된 타사 ID로 돌아옵니다. 그런 다음 해당 계정에 대한 로컬 계정을 만들고 원하는 다른 정보를 수집하십시오. 우리는 그들의 이메일 주소를 수집하고 로컬 사용자 이름을 선택하도록 요청합니다 (우리는 다른 공급자의 기존 사용자 이름으로 양식을 미리 채우려 고합니다). 계정 복구에는 나중에 어떤 형식의 로컬 식별자 (이메일, 사용자 이름)를 갖는 것이 매우 중요합니다.
브라우저에 기존 계정에 대한 세션 쿠키 (유효하거나 만료 된)가없고 사용 된 타사 계정을 찾을 수없는 경우 서버는 처음 로그인임을 알고 있습니다. 우리는 사용자에게 로그인하는 것이 아니라 새 계정을 만들고 있음을 알리기 위해 이미 계정이있는 경우 기존 계정으로 일시 중지하고 로그인하도록합니다.
우리는 정확히 동일한 흐름을 사용하여 추가 계정을 연결하지만 사용자가 타사에서 돌아올 때 유효한 세션 쿠키가 존재하여 새 계정을 로그인 작업에 연결하려는 시도를 구별합니다. 각 유형의 타사 계정은 하나만 허용하고 이미 연결된 계정이 있으면 작업을 차단하십시오. 새 계정을 연결하기위한 인터페이스가 이미있는 경우 (제공자별로) 비활성화되어 있기 때문에 문제가되지 않습니다.
사용자가 이미 로컬 계정에 연결된 새 타사 계정을 연결하려고하면 두 계정을 병합 할 것인지 묻는 메시지를 표시하기 만하면됩니다 (데이터 세트와의 병합을 처리 할 수 있다고 가정하면 더 쉬울 것입니다) 완료보다). 병합을 요청하는 특수 버튼을 제공 할 수도 있지만 실제로는 다른 계정을 연결하기 만하면됩니다.
이것은 매우 간단한 상태 머신입니다. 사용자가 타사 계정 ID를 사용하여 타사로부터 돌아옵니다. 데이터베이스는 다음 세 가지 상태 중 하나 일 수 있습니다.
- 계정이 로컬 계정에 연결되어 있고 세션 쿠키가 없습니다-> 로그인
- 계정이 로컬 계정에 연결되어 있고 세션 쿠키가 있습니다-> 병합
- 계정이 로컬 계정에 연결되어 있지 않으며 세션 쿠키가 없습니다-> 가입
계정이 로컬 계정에 연결되어 있지 않고 세션 쿠키가 있습니다-> 추가 계정 연결
- 타사 제공 업체와 계정 복구를 수행하는 방법은 무엇입니까?
이것은 여전히 실험 영역입니다. 대부분의 서비스가 타사 계정 옆에 로컬 암호를 모두 제공하므로 "나의 암호를 잊어 버렸습니다"사용 사례에 중점을두기 때문에 완벽한 UX를 보지 못했습니다.
Sled에서는 '로그인에 도움이 필요하십니까?'를 사용하기로했습니다. 클릭하면 사용자에게 이메일 또는 사용자 이름을 묻습니다. 검색하고 일치하는 계정을 찾으면 해당 사용자에게 자동으로 서비스에 로그인 할 수있는 링크를 이메일로 보내십시오 (한 번만 유효). 일단 들어가면 계정 연결 페이지로 바로 이동하여 추가로 계정을 연결하고 연결해야하며 이미 연결 한 타사 계정을 보여줍니다.