0

nodejs lamdasを使用して、AWS Cognitoおよびフロントエンドコードから認証トークンを取得しています。「aws-sdk」:「^ 2.74.0 "ジャバスクリプト/ typescriptですのSDK:AWS Cognitoフェデレーションアイデンティティプールカスタム認証プロバイダ

var creds = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: environment.identityPoolId 
}) 

AWS.config.update({ 
    region: environment.region, 
    credentials: creds 
}); 

var lambda = new AWS.Lambda(); 

私は私のAWS.CognitoIdentityCredentials.paramsにトークンやID番号を次のように署名するとき:

creds.params['IdentityId'] = output.identityId; 
creds.params['Logins'] = {}; 
creds.params['Logins']['cognito-identity.amazonaws.com'] = output.token; 
creds.expired = true; 

を、私は、次のlamda.invokeコールを取得することができていますフェデレーションされたID pに設定された認証された役割のarnを使用するool。 私が持っている問題は、ユーザーにサインアウトしようとするときです。私は多くのフォーラムの記事を読むが、誰もこれについて明確な説明をしていないようだ。

creds.clearCachedId(); 
creds.refreshPromise(); 

javascriptのAWS-SDKは、セッション/認証情報をクリアし、認証されていないユーザーの役割ARNまたはログアウトに切り替えする方法を示す任意の例は:私は助けにはならなかった私のフロントエンドログアウト機能に次のように使用してみましたそのユーザーが次回AWSサービス(私の場合はlambda.invoke)を呼び出すと、認証された役割を使用する代わりに認証されていない役割のarnが使用されるように設定を更新します。だから、CognitoはSIGOUTを認識していないようだ、あるいは私はそれを認識させるための呼び出しを逃している。私はcreds.clearCachedId()がそれを行うと思っていたが、明らかにそうではなかった。

答えて

0

まあそれは私が手動でcreds.paramsをクリアするために必要な判明:

creds.params['IdentityId'] = null; 
    creds.params['Logins'] = null; 

私は以下のことを行うが、どうやらないと思うだろう。

creds.clearCachedId(); 
creds.refreshPromise(); 
関連する問題