AWS iOS SDK v2.4.7과 함께 Swift를 사용하여 iOS 9 앱에서 인증 및 사용자 데이터를 관리하기 위해 AWS Cognito를 통합하는 과정에 있습니다. 그러나이를 수행하는 방법에 대한 명확한 예를 찾을 수 없습니다. Google 로그인 기능이 작동합니다 (즉, Google에서 ID 토큰을 성공적으로 가져올 수 있음). 그러나 이것을 AWS에서 인증하는 데 사용할 수있는 방법이 확실하지 않습니다. 올바른 사용 권한을 가진 ID 풀과 사용자 역할을 만들었습니다. 내 문제는 AWS의 인증을 위해이 토큰을 Cognito에 전달하는 것 같다.AWS SDK v2.4.7을 사용하여 외부 제공 업체 (예 : Google)를 통해 최종 사용자를 인증하는 방법은 무엇입니까?
AWS 안내서에 제공된 code snippet은 여전히 2.4.0 SDK 이전 버전에서 사용되지 않는 메소드를 사용합니다. 나는 새로운 모범 사례의 예를 찾지 못했습니다. 문제가 좀 더 혼란스럽게 만들기 위해 AWS의 Authentication Flow overview은 v2.4.0 릴리스 이전의 this 게시물에 설명되어 있기 때문에 여전히 v2.4.0 이전 버전 인 것으로 보입니다. 그러나 첫 번째 코드 스 니펫에서 설명한 것과 다른 프로세스를 사용하는 것 같습니다. . (Google+ 로그인에서 새로운 Google 로그인 시스템으로 이전하면서 가이드가 게시 된 이후 Google의 프로세스가 약간 변경된 것으로 보입니다.)
요약하면, 내 로그인에 허용되는 방법은 무엇입니까? 최신 AWS iOS SDK (v2.4.7)를 사용하여 Google을 통해 최종 사용자를 인증하고 Cognito (차후 AWS API 호출 용)를 통해 인증합니까?
여기 현재 나의 시도입니다. 구글 로그인 절차가 완료되면
// AWS setup
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId:"us-east-1:<REDACTED>")
let serviceConfig = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = serviceConfig
그런 다음, 나는 Cognito 인증하기 위해 ID 토큰을 사용하려고 : 가이드에 설명 된대로 첫째, 내 응용 프로그램 위임에, 나는 AWS 서비스를 초기화합니다. 다음 스 니펫의 user
은 성공적인 Google 로그인에 의해 반환 된 GIDGoogleUser
입니다. Google 로그인이 작동하고 유효한 ID 토큰을 가지고 있는지 확인했습니다.
let getIdInput = AWSCognitoIdentityGetIdInput()
getIdInput.logins = [ "accounts.google.com" : user.authentication.idToken ]
getIdInput.identityPoolId = "us-east-1:<REDACTED>"
getIdInput.accountId = "<REDACTED>"
AWSCognitoIdentity.defaultCognitoIdentity().getId(getIdInput).continueWithBlock{ (task: AWSTask?) -> AnyObject? in
if task?.error == nil {
let result = task?.result as! AWSCognitoIdentityGetIdResponse
let input = AWSCognitoIdentityGetCredentialsForIdentityInput()
input.identityId = result.identityId
AWSCognitoIdentity.defaultCognitoIdentity().getCredentialsForIdentity(input)
} else {
}
return nil
}
로그는,이 (내가이 풀에 대한 인증되지 않은 액세스를 허용하지 않는 것이 사실이다) 반드시 잘못이 아니라 내가 기대했던 것이 아니다
Unauthenticated access is not supported for this identity pool.
을주는 구글 토큰 이후 나는 사용자를 인증해야합니다. 이견있는 사람?