0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VSCodeのREST ClientでCognitoを利用するためのツールを作ってみた

Posted at

はじめに

皆さんは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つの項目を追加してください。

..env
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で返却されるデータの構造は次の形になります。

..json
{
  "token": "アクセストーン"
}

なので、これをREST Clientで利用する場合は次のように記述することで利用できるようになります。

RestClient.rest
@rccPort = 3000

###

# @name login

GET http://localhost:{{rccPort}}/login

@authToken = {{login.response.body.token}}

あとはauthTokenを色々なAPIで利用してもらえれば、Cognitoからもらった認証情報を用いてAPIをコールできるようになります。

オプション

デフォルトで3000番ポートで起動しますが、だいたいの方は3000番ポートは使っていると思います。
なので、-p--portオプションを利用することで、ポート番号を変更することができるようになっています、
例:rcc -p 4000rcc --port 4000

最後に

簡単な動作確認程度のことしかしていないので、何かありましたらGitの方でコメントお願いします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?