はじめに
皆さんはVisual Studio Codeの拡張機能の一つのREST Clientは利用していますか?
VSCode上でREST APIを呼び出すツールとして人気があると思います。
しかし、このツールではOAuth2.0がサポートされおらず、Cognitoで認証し、APIをコールすることが現時点ではできません。(2019年12月14日時点)
また、似たツールとしてPostmanが有名ですが、あちらはCognitoで認証してAPIをコールすることができますが、私は次の点でPostmanを利用せずにREST Clientを利用しています。
- テキストベースでAPIを定義することができるので、Gitで管理することができる。
Gitで管理することで、APIも変更があった場合もそのバージョンでコールするための情報が残っているので、APIのバージョンごとの呼び出しデータを管理する必要がなくなるのは大きかったです。
実装方法
ローカルにCognitoで認証を行いアクセストークンを取得してきてくれる認証サーバをローカルに立ててるだけです。
インストール方法
必要としているディレクトリでnpm i -D rest-client-cognito
でインストールすることができます。
Nodeの開発環境でななければ、グローバルインストールしていただければ利用できると思います。(未検証)
使い方
プロジェクトディレクトリに.env
ファイルを作成してください。
次の4つの項目を追加してください。
RCC_USER_POOL_ID={CognitoのユーザープールID}
RCC_CLIENT_ID={アプリクライアントID}
RCC_USER_NAME={ログインするユーザー名}
RCC_PASSWORD={ログインするユーザーのパスワード}
次にコンソールでrcc
コマンドを実行することで、Cognitoの認証サーバをローカルに立ち上げることができます。
rcc
で立ち上がる認証サーバはデフォルトで3000番ポートで起動するようになっています。
localhost:3000/login
をGETすることでアクセストークンを取得することができます。
(普通ログインといったらPOSTですが、深夜テンションで作成したのですっかりそんなことも忘れて作ってしまいました。。。指摘しないでもらえると助かります。。。)
このAPIで返却されるデータの構造は次の形になります。
{
"token": "アクセストーン"
}
なので、これをREST Clientで利用する場合は次のように記述することで利用できるようになります。
@rccPort = 3000
###
# @name login
GET http://localhost:{{rccPort}}/login
@authToken = {{login.response.body.token}}
あとはauthToken
を色々なAPIで利用してもらえれば、Cognitoからもらった認証情報を用いてAPIをコールできるようになります。
オプション
デフォルトで3000番ポートで起動しますが、だいたいの方は3000番ポートは使っていると思います。
なので、-p
か--port
オプションを利用することで、ポート番号を変更することができるようになっています、
例:rcc -p 4000
、rcc --port 4000
最後に
簡単な動作確認程度のことしかしていないので、何かありましたらGitの方でコメントお願いします。