1

API Gateway/Lambdaの次の問題を解決する方法について誰かが良いアイデアを持っていたのかどうか疑問に思っていました - APIのコンシューマは、 APIゲートウェイに添付されているオーサライザでは、APIはすべてを処理してトークンを戻すだけです。AWS:開発者が認証したIDを持つ安全なAPIゲートウェイ

したがって、ユーザーは、私は(私は簡潔のためにエラー処理をみじん切り)次の操作を行い、ドキュメントごとになるように、私のログインラムダユーザー名とパスワードを送信します。

const cognitoidentity = new AWS.CognitoIdentity({ region: 'eu-west-1' }) 
    const userId = authenticationService.authorise(username, password) 
    const params = { 
     IdentityPoolId: 'eu-west-1:my-identity-pool-id', 
     Logins: { 
      'myapp.mydomain.com': userId, 
     }, 
    } 
    cognitoidentity.getOpenIdTokenForDeveloperIdentity(params, (err, data) => { 

    // Now I have an OpenId token and an identity Id 


}) 

は当初、私は、私はその後、GetCredentialsForIdentityを呼び出す必要がありますと思いましたしかし、それは私にアクセストークンを返さない、私はここに正しいルートを下っているのですか、私は何かを逃したのですか?

アップデート:消費者がAWSクライアント側SDKを実装する必要はありませんが、基本的には従来のAPIのようなリクエストを作成できるヘッダーを追加することができます。

+0

コンシューマがAWS SDKを実装する必要がない場合、どのようにしてトークンを取得してAPIにアクセスできますか?コンシューマー向けにカスタムトークンジェネレーターまたはこれに類似したものがありますか? –

+0

ユーザープールについては、彼らはJWTのバックを得ることができます。これ以上の研究から私は思うアイデンティティプールは時間の無駄ですので、私は自分のJWT実装をフェデレーションされたアイデンティティで使用することを考えています。私がそれを証明したときの答え。 –

答えて

0

はコメントに基づいて更新: チェックこのコード

var data = { 
     UserPoolId : '...', // Your user pool id here 
     ClientId : '...' // Your client id here 
    }; 
    var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(data); 
    var cognitoUser = userPool.getCurrentUser(); 

    if (cognitoUser != null) { 
     cognitoUser.getSession(function(err, session) { 
      if (err) { 
       alert(err); 
       return; 
      } 
      console.log('session validity: ' + session.isValid()); 

      AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
       IdentityPoolId : '...' // your identity pool id here 
       Logins : { 
        // Change the key below according to the specific region your user pool is in. 
        'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>' : session.getIdToken().getJwtToken() 
       } 
      }); 

      // Instantiate aws sdk service objects now that the credentials have been updated. 
      // example: var s3 = new AWS.S3(); 

     }); 
    } 

session.getAccessToken().getJwtToken()あなたはあなたを助けるかもしれない

このリンクhttp://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.htmlをaccesstoken与えます。

ユーザがユーザ名とパスワードを使用してログインした後にアクセストークンを生成する必要があります。そして、後でそのキーを確認することができます。 それ以外の場合は、ユーザーが確認されたらSTSを使用して資格情報を生成して渡すことができます。

APIゲートウェイでコード内にAPIキーを作成して使用できるかどうかを確認します。

+0

こんにちは、ありがとう、私が持っている問題は、実際にアクセストークン、アイデンティティトークンなどを取得すると、私はopenIdトークンを持っています。 –

+0

@MrkFldigアップデートを確認してください。リンク:http://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-javascript-examples.html – skarfa

+0

Skarfaさん、ありがとうございます。アイデンティティプール。 –

関連する問題