2017-12-14 2 views
0

인증되지 않은 사용자에 대해 AWS Cognito를 다음과 같이 성공적으로 구현했습니다. 인증되지 않은 사용자의 경우 IdentityId가 성공적으로 반환되면 Cognito Sync를 사용하여 데이터 집합을 만들고 조작 할 수 있습니다. 인증 된 사용자와 함께 Cognito Sync를 사용할 수 없었습니다. 누군가가 인증 된 사용자에 대한 IdentityId를 얻는 방법을 말해 줄 수 있습니다. 그러면 IdentityId가 필요한 recordRecords를 허용 할 수 있습니다. IdentityId는 항상 정의되지 않은 것으로 반환됩니다. 사전AWS 인증 된 사용자와의 Cognito 동기화

+1

result.getIdToken().getJwtToken()

모든 노력 당신은 세션을 입수했습니다 인증 된 사용자의 경우? 이 페이지의 유스 케이스 4를 보셨습니까? https://github.com/aws/amazon-cognito-identity-js – behrooziAWS

+0

예, 'cognitoUser.authenticateUser (...)'에서 반환 된 JWT를 사용하고 있습니다. 새로운 CognitoIdentityCredentials (...)와 함께 사용하기 위해 Cognito 사용자 풀 '로그인'에 JWT를 추가했지만 기쁨은 없습니다. – hadders

답변

0

에서

AWS.config.credentials = new CognitoIdentityCredentials({ 
    IdentityPoolId: REACT_APP_AWS_CONFIG_IDENTITY_POOL_ID, 
}); 

const userPool = new CognitoUserPool({ 
    UserPoolId: REACT_APP_AWS_CONFIG_USER_POOL_ID, 
    ClientId: REACT_APP_AWS_CONFIG_CLIENT_ID, 
}); 

let cognitosync = new AWS.CognitoSync(); 

AWS.config.credentials.get(()=>{ 
    IdentityId = AWS.config.credentials.identityId; 
    listRecords(); 
}); 

function listRecords(){ 
    cognitosync.listRecords({ 
     DatasetName  : DATA_SET_NAME, 
     IdentityId  : IdentityId, 
     IdentityPoolId : REACT_APP_AWS_CONFIG_IDENTITY_POOL_ID 
    }, function(error, data) { 
     //... 
    }); 
} 

덕분에 나는 당신이 단지 인증 된 사용자에 대한 귀하의 AWS.config.credentials 객체에 Logins지도를 추가해야합니다 생각한다.

Logins 맵에 입력하는 내용은 사용자 인증 방법에 따라 달라 지지만 IDP (Identity Provider)를 키로 사용하고 IDP에서받은 ID 토큰을 값으로 사용하여 단일 항목이 필요합니다. 사용자가 구글 인증 된 경우


예를 들어, 당신은 할 수 있습니다

googleUser
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx', 
    Logins: { 
     'accounts.google.com': googleUser.tokenId 
    } 
}); 

구글에 의해 반환되는 객체입니다.


Cognito 사용자 풀에 인증 된 사용자가, 당신이있을 경우

: session는 당신이 CognitoUser.getSession()에 제공하는 콜백에 전달

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'us-east-1:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx', 
    Logins: { 
     'cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxx': 
     session.getIdToken().getJwtToken() 

    } 
}); 

. 이 사용 사례에 대한 추가 코드 컨텍스트 in this Gist.

+0

의견을 보내 주셔서 감사합니다. 이미 성공적으로 Cognito User Pool Login을 추가하려고했지만 AWS 콘솔에서 설정이 잘못된 것인지 궁금하게 생각하면서 제안을 듣는 것에 대해 감사드립니다. 나는 모든 것에 대해 노력한 것처럼 느껴집니다! – hadders

0

내 문제가 무엇인지 발견했습니다.

result.getAccessToken().getJwtToken()

이 있었어야 : 내가 사용 된 Login 키/값에 대한 JWT를 얻으려면 지금