2016-09-30 2 views
0

사용자 풀 서비스를 사용하여 AWS에서 모바일 애플리케이션 인증 시스템을 설정하려고합니다.AWS Cognito 사용자 인증 흐름에 대한 제안 및 조언이 필요합니다.

모바일 전용 응용 프로그램이므로 whatsapp와 같은 OTP/MFA 확인 옵션 만 필요하므로 여기에 첫 번째 도전 과제가 있습니다.

사용자 풀에는 inbuilt MFA를 사용하고 있으므로 사용자 이름과 비밀번호가 필요합니다. phone_number 속성을 사용했습니다. 나는 어떤 사용자 이름이나 암호도 필요로하지 않았다. 여기 내가 계획 한 것이있다.

  1. 내 인증 기관에서 인증되지 않은 ID를 허용합니다.
  2. 가공 등록은 [사용자 이름은 cognito, 암호 = "somethingxyz"(예, S/W에 하드 코딩), PHONE_NUMBER = 제공된 전화 번호가 제공 정체성 =] 성공적으로 OTP에 등록 후
  3. 제공자에게 & 할당을 크리 덴셜 내 IdToken을 통과 처음에 생성 된 ID로 사용자 풀 사용자.

로그인 프로세스를 완료하는 데 MFA가 필요한 경우 하드 코드 된 비밀번호를 사용해도 괜찮습니까? 인증되지 않은 ID에 사용자 풀 계정을 할당하고 인증을 켤 수 있습니까? (이유는 무엇입니까? 가입 프로세스에서 사용자 이름으로 ID를 사용했기 때문에 다른 임의의 ID를 원하지 않습니다. 오류)?

+0

안녕하세요 남자. 그것을 작동시키지 않았다. 내 응용 프로그램은 OTP 인증 모바일 번호를 기반으로 로그인 기능을 가지고 있으며 사용자 이름을 공란으로 사용할 수 없기 때문에 사용자 이름에도 모바일 번호를 사용했습니다. – desidigitalnomad

+1

국가 번호와 함께 모바일 번호를 사용하고 스트립 + 그것을 밖으로, 그래서 사용자 이름을 꽤 쉽게 사용자가 국가 및 제공 선택하기 쉽습니다 그의 휴대 전화 번호. 예 : + 919699XXX02에서 사용자 이름 : 9196999XXX02 –

답변

3

나는 stackoverflow가 제안이나 조언을 원하지 않는다고 생각합니다. 그래서 여러분이 묻는 질문에 대한 대답으로 답을 형식화하려고합니다. "Cognito 시스템의 역할은 무엇이며 어떻게해야합니까?" 그들과 함께 내 애플 리케이션을 구현 ". (이것은 한 달 또는 그 이상 나 자신을 위해 대답하려고 노력한 질문입니다). 내 대답은 IOS SDK API의 관점에서 설명되지만 일반적으로 적용됩니다.

Cognito는 신원은 활동에 대한 제한 또는 컨트롤을 갖고 싶어

그래서, 당신은 어떤 종류의 필요 당신 "IdentityId의"를 발행하지만 등 사용자 이름이나 암호를 사용하여 그 정체성의 인증을 관리하지 않습니다 등록 프로세스. Facebook ID, Google+ ID 또는 자신의 ID (BYOI는 자신의 ID를 가져옴) 또는 새로운 Cognito 사용자 풀 (AWS가 제공하는 ID 제공 업체)을 사용할 수 있습니다. (이 모든 "Identity Providers"는 일종의 Token과 Identity 제공자 이름을 제공합니다.) 이들 중 어느 것도 IdentityId를 제공하지 않습니다. 즉, Cognito Identity의 업무입니다. 일시적 S3, 람다, DynamoDB의 등

그래서 어떤 사용자 이름과 암호를 사용하지 않고, 수단을 IdentityId에 대한 AWS 자격 증명을 취득하고 사용할 수 있도록

Cognito 자격 증명 공급자가 AWS에서 IAM 역할에 CognitoIdentity IdentityId 연결 인증을받지는 못했지만 신원 정보를 계속 소유 할 수 있으면 Cognito ID가이를 유지 관리하며 고유하게됩니다 (모바일 장치를 따라). 그러나 사용자는 자신의 신원에 대해 Cognito에게 알릴 방법이 없으므로 다른 기기로 이동하고 동일한 신원을 유지할 수 없습니다. 그것이 Identity Providers가하는 일입니다 (그리고 그들은 당신이 암호/mfa 등을 요구함으로써 거짓말을하지 않는지 확인합니다).

API 및 SDK의 이름을 이해하기는 어렵지만 기본적으로 CognitoIdentity로 시작하는 클래스는 Provider라는 단어없이 구성 요소가 페더레이션 ID 시스템의 일부이며 CognitoIdentityProvider로 시작하는 클래스는 장치를 인증하는 것입니다./사용자는 누가/무엇이라고 말합니까? 그리고 CognitoIdentityProviderManager는 CognitoIdentityProvider 이름 (예 : "graph.facebook.com"또는 cognito-idp.us-east-1)을 반환합니다.CognitoIdentity 시스템에 해당 사용자가 로그인되었음을 알리기 위해 (예 : amazonaws.com/) 및 Token (및 OpenID Connect 토큰 (OIDC))을 사용합니다 (CognitoIdentity에 [name : token]의 로그인 사전을 반환하여이를 수행합니다. 장면은 오픈 아이디 연결 서버 또는 다른 서버 (IE 페이스 북)이 토큰의 유효성을 검사합니다.

그래서 당신을위한 질문은, 어떻게 (나는 WhatsApp에 모르는) 고유 사용자를 식별하려고한다.

관련 문제