2016-10-18 7 views
2

최근 OpenID Connect 표준을 발견했습니다. 이제는 OpenID Connect 표준을 사용하는 올바른 방법을 찾는 데 어려움을 겪고 있습니다.OpenID Connect 유스 케이스

그럼 인증 된 사용자의 개념이 있어야하는 꽤 표준 웹 앱을 만들고 있다고 가정 해 보겠습니다. 그래서 내 첫번째 의도는 사용자 ID, 이메일, 먼저 & 성, 패스워드, 소금 등을 포함하는 사용자 테이블을 가진 로컬 DB를 구축하는 것입니다. 이것은 가입, 로그인, 변경/삭제와 같은 모든 관련 기능을 구현해야한다는 것을 의미합니다. 암호를 잊어 버리십시오.

대신 OpenID를 사용하고 다른 곳에 저장된 사용자 정보 (예 : Google)를 사용합니다.

그런 다음 일반적인 OAuth2 마법을 수행하여 사용자를 리디렉션하고 동의를 요청할 수 있습니다.

이 시점부터 시작하면 트랙이 느슨합니다. Google (또는 다른 AS)이 기본 사용자 정보 (이메일, 이름, 전화)로 백엔드 앱 ID 토큰을 반환 한 후 나는 무엇을해야합니까? 이 필드에서 채워진 로컬 사용자 DB (암호없이)가 있어야합니까? 이 경우 OpenID Connect는 멋진 자동 가입 절차 일뿐입니다. 세션과 로그 아웃은 어떻게 처리합니까? 사용자가 이전 버전을 저장 한 상태에서 Google 사이트에서 휴대 전화를 변경하면 어떻게됩니까?

웹에서 OpenID Connect 관련 기사를 많이 읽었지만 토큰을 얻는 과정에서 기본 흐름을 설명하는 것처럼 보입니다. 그래서 나는 앞으로의 단계에 대해 혼란스러워합니다.

이 문제에 대한 힌트/조언을 보내 주시면 감사하겠습니다.

답변

3

이 현대적인 인증 방식의 가장 흥미로운 점은 인증을 제 3 자 제공 업체에 쉽게 위임 할 수 있다는 것입니다.이 인증 코드를 작성하고 지원해야하는 번거 로움이 없습니다. 사용자 ID 관리

당신과 관련하여 다음 질문이 발생하면 어떻게됩니까? 나는 모든 대답을 시작하지 않으려 고 노력할 것이다.


Q1나는 여전히이 분야에서 채워 로컬 사용자 (암호 없음) DB를할까요?

사용자가 응용 프로그램과 온라인으로 상호 작용하지 않을 때 응용 프로그램이 사용자 정보를 알 필요가없는 경우 거의 아무것도 저장하지 않아도됩니다. 기껏해야 사용자가 생성 한 데이터에 고유 한 사용자 식별자를 저장하려고합니다.

한편, (정말로) 재미있는 일이 발생하면 응용 프로그램에서 전자 메일로 사용자에게 알리는 경우 데이터베이스에 사용자 전자 메일을 저장해야합니다.


Q2오픈 ID 연결 단지 멋진 자동 가입 절차 (내 데이터베이스입니다 거의 모든 정보를 복제해야하는 경우)?

종류에 관계없이 응용 프로그램 인증을 타사에 위임 할 수있는 표준 일 뿐이며 이미 존재를 통해 엄청난 이점을 얻었습니다.인증을 다른 사람에게 맡길 수 있다면 사소한 것이 아닙니다. 이렇게하면 최종 사용자에게 유리하게 작용합니다. 공급자의 인기도에 따라 다른 자격 증명을 기억하지 않아도 이제 응용 프로그램에 로그인 할 수 있기 때문입니다.


무엇 세션과 로그 아웃에 대한 Q3?

여기서는 독립적 인 세션을 원할 경우 크게 변경되지 않습니다. 응용 프로그램이 자격 증명의 유효성을 검사하고 세션을 시작하기 전에 이제 타사에서 제공 한 토큰을 확인한 다음 세션을 시작합니다. 로그 아웃하면 세션이 종료됩니다.

동기화 된 세션을 원할 경우 사용자가 응용 프로그램에서만 활성화되고 타사 공급자에서도 세션이있는 경우 더 많은 작업이 필요합니다. 너가 이미 그것을하지 않으면,보십시오 정보 더를 위해 OpenID Connect Session Management 1.0.


Q4 나는 여전히 이전 버전을 저장 한 동안 사용자가 구글 사이트에서 자신의 휴대 전화를 변경하면 어떻게?

OpenID Connect를 사용하지 않고 응용 프로그램 별 사용자 ID를 관리해야하는 경우에도 마찬가지입니다. 문제는 없습니다. 사용자는 Google에서 전화를 변경하고 앱에서 사전에 전화를 변경하지 않으면 구식이됩니다.

fiddur으로 지적되었으므로 업데이트 된 정보가 있으면 해당 공급자와 사전 대응할 가능성이 있습니다. 이것은 대부분의 공급자가 지원하고 최종 사용자에게 훌륭한 사용자 경험을 제공 할 수있는 부수적 인 이점이 있습니다. 외부 업체에 인증을 위임 할 수있는 기회가 있다면


결론에서 이렇게하십시오. 사용자 지정 인증을 구현하거나 사용 가능한 모든 표준을 준수하는 인증 공급자로 자리 매김하기까지는 보안상의 함정으로 가득한 매우 시간이 많이 걸리는 문제입니다.

소셜 인증 공급자가 제공하는 것보다 인증 프로세스를 더 잘 제어해야한다고 생각하는 경우 더 유연한 공급자를 선택할 수있는 옵션이 아직 남아 있지만 Auth0이 마음에 들지만 편견 () 저는 Auth0 엔지니어 입니다.입니다. 이러한 유형의 옵션은 인증 표준을 구현하는 데 여전히 부담을주지 않으면 서 더 많은 제어 권한을 제공합니다.

+0

Q2 : 특히 OpenID Connect Dynamic Registration을 제공하는 업체가 많을 경우 사용자에게 단일 로그인 기회를 제공합니다. – fiddur

+0

Q4 : 정기적으로 공급자로부터 userinfo를 다시 검사 할 수있는 옵션이있어서 사용자는 모든 사이트에서 동일한 정보를 업데이트 할 필요가 없습니다. – fiddur

+0

@fiddur 사실, 최종 사용자에게는 상당한 이점이 있습니다. 나는이 두 가지 점을 업데이트하여 사용자 관점에서의 이득을 언급 할 것이다. 감사. –