2016-11-14 6 views
4

AWS API Gatewayでカスタム認証を使用していますが、結果に応じて追加のHTTPヘッダーを追加したいと考えています。これが可能なのか、それをどうやって行うのか誰にも分かります。そうでない場合は、これが可能なのか、いつ可能になるのかという考えがありますか?APIゲートウェイのAWSカスタム認証からHTTPヘッダーを追加することはできますか?

多くのありがとうございます。あなたが唯一の承認者の結果からPrincipalIdを得ることができます

答えて

3

を使用してヘッダーの値をマッピングすることができます。ドキュメントはすぐにアップする必要があります。

今、あなたは、承認者関数からこのようなオブジェクトを返すことができます。

{ 
    "principalId": "xxxxxxxx", // The principal user identification associated with the token send by the client. 
    "policyDocument": { 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
     "Action": "execute-api:Invoke", 
     "Effect": "Allow|Deny", 
     "Resource": "arn:aws:execute-api:<regionId>:<accountId>:<appId>/<stage>/<httpVerb>/[<resource>/<httpVerb>/[...]]" 
     } 
    ] 
    }, 
    "context" : { 
    "key" : "value", 
    "numKey" : 1, 
    "boolKey" : true 
    } 
} 

配列やオブジェクトは、有効なJSONとして、文字列のみ/数/ブール許可されていません。ルートキーの名前はcontextである必要があります。

あなたはとてもように要求$コンテキストでこれらの値にアクセスすることができます。

$context.authorizer.key -> value 
$context.authorizer.numKey -> 1 
$context.authorizer.boolKey -> true 

だからあなたの質問に答えるために、あなたは文句を言わない」条件付きヘッダを追加できるようにしていますが、設定することができますヘッダー値を$context.authorizer.yourKeyに設定し、承認者の応答にyourKeyが設定されていない場合、ヘッダー値は空白になります(ヘッダーはまだ送信されます)。

編集:

ドキュメントが

+0

ありがとうございます。 –

+1

マインドマーキングは正解ですか?これは、ドキュメントがライブになるまで、最も新しい機能に関するドキュメントです。 –

+0

@ JackKohn-AWS、この作業はあなたのMockを使っているのですか?私は$ context.authorizer.principalIdをthで使用しようとしていますe統合要求のボディマッピングがエラーを投げています。 –

0

、あなたの統合要求で、あなたは私たちは最近、このためのサポートを追加したcontext.authorizer.principalId

0

http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html#api-gateway-custom-authorizer-outputが、私は私の髪を引っ張っ日後にこの作業を取得することができたライブで、うまくいけば、私はそれから誰かを保存することができます。それはジャックの反応にもう少し追加されます。 基本的には、動的AuthPolicyを作成し、を移入するためにあなたのビジネスロジックを実行し、作成し、オーソラムダ(あなたが始めるために承認者の青写真ラムダを使用することができます)ボディマッピング・テンプレートに

  1. を使用してヘッダを追加することができますコンテキストキー/値を持つオブジェクト。 API Gatewayの
  2. は、メソッド要求をクリックして、リソースを選択して、オーソラムダ
  3. オープンメソッド実行に認証を設定し、統合の種類を選択して、選択解除使用ラムダプロキシ統合に確認してください(ラムダにあなたの要求ポイント場合)
  4. ボディマッピングテンプレートを追加 - テンプレートから1を作成し、$ context.authorizer.key
  5. へのアクセス権を持っているところ、これはちょうど(あなたのテンプレートに以下を追加しています「体の下」 -json ":$ input。JSON(「$」)、あなたのような追加の情報を追加することができ、キー・ヘッダ 『とも前方のすべての元のヘッダー」
"headers": { 
    "key-header" : "$util.escapeJavaScript($context.authorizer.key)", 
    #foreach($param in $input.params().header.keySet()) 
     "$param": "$util.escapeJavaScript($input.params().header.get($param))" 
     #if($foreach.hasNext),#end 
    #end }, 

これはと呼ばれる新しいヘッダを追加します)大丈夫です』 user_id、user_roleなどのサービスをアップストリームサービスに追加

関連する問題