冥冥乃志スマートフォン用の表示で見る冥冥乃志ソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。この広告は、90日以上更新していないブログに表示しています。Gatewayのアプリケーションに認可を追加するProgrammingしばらく合同勉強会の資料準備とシュバルツバース探索など優先順位が高いタスクが積まれていて、手をつけておりませんでしたが、ようやく再開。今回は完全に備忘録的なレベルです。今回は、表題の通り認可を追加してみたいと思います。今回仮で組んだものとは違いますが、最終的な構成のイメージとしては以下の様な感じ。認証のプロバイダはアプリケーション外アプリケーションは認証されていることを前提に個別に認可つまり、アプリケーションは「その人が本人であること」を確認する責任をおいませんが、「その人がアプリケーションを使う権限をもつこと」を確認する責任はおいます。SPAであればアプリケーション内に認証プロバイダを持ってもいいと思います。用途次第ということで。いつもの如く、具体的なコードはこちらのリポジトリをご査収ください。github.comCognitoでUserPoolをつくるとは言え、いくつもサービスが乱立してしまうのもまだ面倒いので、とりあえず認証プロバイダはアプリケーションのリソースに突っ込んで設定、アプリケーションのデプロイと同様にUserPoolもデプロイされる様にしました。認証プロバイダの切り離しはまたあとでやってみたいと思います。肥大しがちなserverless.ymlの分割とかも、プロジェクトのファイル構成の観点からやってみときたいし。api.wp-kyoto.netこの記事を参考にしました。問題なくデプロイまで出来ます。Glueの検証してたのをすっかり忘れてて、違うリージョンみながら「デプロイされねーな」とか思ってた無駄な時間があったくらいです。記事にはクライアント側が書かれていませんが、私はクライアントのページを用意するのも面倒いので(フロントエンド苦手)、認証用のLambda関数を追加で作りました。sign_upとconfirmとsign_inとrefresh_tokenができる様にしあります。認可という観点でいうと、トークンがあれば作れるはずなので、このあたりがちょっと雑なのは否めません。boto3での認証をどのAPIを使えばいいのかいまいちよくわからなかったので、すこしググりました。参考にしたのはイカです。作成したUserPoolのIDで、このサンプルを使う場合はデプロイ後に設定しておいてあげる必要があります。その意味で面倒な構成にはなっているのですが、認可の部分のコードをみていただければ分かる通り、認可に必要なのはトークンのみです。そのため、実際に認証プロバイダを切り離して構成する場合にはこのあたりの面倒くささはなくなるとおもいます。閑話休題:認可を追加するで、認可。追加すればいいだけでした。blog.naoshihoshi.com認可ロジックでは、トークンからユーザ情報にアクセスできるか確認して、エラーがなければ対象となるLambda関数に実行権限を与えるためのJSONオブジェクトを返しています。Gatewayがよしなにしてくれる模様。GatewayのURLを叩くだけです。ヘッダがない場合は以下のエラーメッセージが返ります。Gatewayを通る場合に有効です。コマンドなど)は、認可なしに実行可能となっています。Gatewayもかなりよしなにしてくれるので、認証・認可周りは非常に楽に開始できるな、と感じました。認証基盤はそれだけで一大プロジェクトになる要素を持っているのですが、そこまで突っ込んでやるのが目的ではないですし。今回検証したかったことは認可の追加が楽かどうか、という観点なので、その点では知りたいことを確認できた感じです。Frameworkプロジェクトと開発者アセットのCDを回す前回の続きです。Frameworkでデプロイしたサービスからswagger.jsonを作りSD...先日の続きです。L...2017-07-01Swaggerのファイル仕様が不満だったのでRAMLを触って比較してみる前回、こういうの書きました。»プロフィールid:mao_instantlifeソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。月別アーカイブ参加グループプログラミングはてなブログをはじめよう!mao_instantlifeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。