2016-11-28 2 views
0

Google은 인증되지 않은 Cognito 액세스를 사용하는 iOS 애플리케이션을 개발 중입니다. 이제 신원 제공 업체 인 Cognito User Pools를 추가하고 있습니다.iOS AWS 여러 기기에서의 Cognito 인증

장치 A가 로그인 프로세스를 수행 할 때 Unauthenticated에서 Authenticated로 Cognito ID가 동일하게 유지되는 것을 볼 수 있습니다. 그런 다음 장치 B가 로그인 할 때 Unauthenticated to Authenticated. 사용자가 기기 A에서 인증 된 Cognito ID를 가져올 것으로 예상됩니다. 그렇지 않습니다.

그래도 모두 Device A에서 Cognito ID로 전환 했습니까? 그것도 그럴 것 같지 않습니다. 두 장치 모두 별도의 Cognito ID를 가지고 있지만 Cognito User Pools에서 동일한 사용자 계정을 사용하고 있습니다. 하지만 어느 누구도 Cognito ID를 공유하지 않습니다.이 ID는 설명서에서 설명한 것과 반대되는 것으로 보입니다.

누군가 우리가하고있는 일이 유효한 워크 플로우인지, 그리고 아마도 우리가 잘못하고있는 일을 확인할 수 있습니까?

Google은 Cognito ID를 백엔드 서버에 저장하여 해당 데이터를 사용자에게 연결하지만 예기치 않게 Cognito ID가 바뀌면서 좋은 해결책을 찾지 못했습니다.

답변

3

AWS Cognito identityId는 인증 된 사용자가 두 개의 서로 다른 장치에서 인증 되더라도 동일합니다.

설명하는 내용이 예상되는 동작이 아닙니다.

아마도 "정말로"인증되지 않았습니다. "정말로"인증 된 의미는 무엇입니까? 즉, 키 체인을 지우고 자격 증명을받는 과정을 거쳤습니다. 신원 제공 업체가 신원 제공 업체로 이동하여 로그인 사전을 가져온 다음 (적절한 IDId를 할당합니다 (즉, 동일하게 될 때) 다른 장치와 같이).

AWS Console에서 페더레이션 ID를 찾고 ID 브라우저를 보면 "정말로"인증되었는지 알 수 있습니다. 문제의 신원에 대한 "로그인"수는 0이 아니어야합니다 ... 귀하의 경우 1을 표시해야하며 ID를 클릭하면 귀하의 풀과 인증되었음을 알 수 있습니다.

수정 사항? 로그인하고 세션을 다시 얻은 후에는 "ID 용 자격증 명"을 받아야합니다 (ios sdk는 "자격 증명"방법입니다).

이 링크는 의견을 cognito notes and diagram

+0

감사합니다 도움이 될 수 있습니다, 우리는 여전히 우리의 구현과 장애물을 타격, 우리는 심지어 비교하기 위해 GitHub의에 프로젝트 예제를 복제하고, 구현은 매우 가깝습니다. – Trihedron

+0

우리가 로그인 할 때 우리가 보게되는 주된 문제는 getSession이 토큰을 반환하지 않는다는 것입니다. userPoolUser (AWSCognitoIdentityUser) .isLoggedIn은 getSession continue 블록 내부와 자격 증명 메서드 내부에서 항상 false입니다. 사용자를 로그인해야 할 필요가있는 것 같습니다. 심지어 getSession에 잘못된 암호를 제공하더라도 완료 블록이 성공한 사용자/암호와 다를 바없는 것처럼 호출 할 수 있습니다. – Trihedron

+1

interactiveAuthenticationDelegate를 사용하는 경우 didCompletePasswordAuthenticationStepWithError 대리자 메서드가 성공과 실패 모두에 대해 호출됩니다. 선택적 매개 변수 "error"는 성공 사례의 경우 nil입니다. ... 또는 어쩌면 당신은 그냥 uid와 암호로 getSession을하고 있습니다. 자격 증명 공급자가 풀에 제대로 연결되어 있는지 확인해야하고 AWSCognitoCredentialsProvider를 사용하여 자격 증명 공급자를 만들 때 완료되어야합니다. pool_id 및 userpool (풀)을 identityProviderManager로 지정합니다. 그렇게하면 pool.logins가 호출됩니다. – Bruce0