(2017.6.23現在の情報です)
Amazon API Gatewayを、cognito認証で使うときの注意点です。
リソース設定後、ステージから「SDKの生成」を選ぶことができます。
ただ、このSDK、Cognito認証を想定してないっぽいです。
(認証なし=NONEか、AWS_IAMの認証しか想定してない)
Cognitoで認証する場合、こんな感じです。
※すでにサインイン済みの想定です。
sample.js
AWS.config.region = 'ap-northeast-1'; // Region
var poolData = { UserPoolId: 'ap-northeast-1_xxxxxxxx',
ClientId: 'xxxxxxx'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
if (cognitoUser != null) {
cognitoUser.getSession(function(err, sessresult) {
if (sessresult) {
var idToken = sessresult.getIdToken().getJwtToken();
var apigClient = apigClientFactory.newClient ();
var params = {};//必要なら設定
var body = {};//必要なら設定
var additionalParams = {
headers: {
Authorization:idToken //ここが大事
}
}
apigClient.methodName(params, body, additionalParams)
.then(function(result){
//成功
}).catch( function(result){
//失敗
});
}
});
}
ヘッダーにちゃんとIDトークンを入れるってだけですが。。。
わかんなかったので書いておきます。
最初、IAMのほうの設定の問題かなぁ。。。とか思って色々やってたけど、
そっちはとくに関係なさそうでした。
cognitoとても便利だけど、ちょっとまだ追いついてない感じもしました。
README.mdに書いといて欲しいな。