graphqlクライアントの Altairでトークン認証を行う方法

こんにちは!kossyです!




さて、今回はgraphql-ruby + Rails APIモードでdevise_token_authを用いてトークン認証する開発において、
Altairを使ってトークン認証をパスする方法についてブログに残してみたいと思います。




環境
Rails 6.0.3.4
Ruby 2.6.3
MacOS Catalina

なお、devise + devise_token_auth で Userモデルを作成し、
CORSの設定やマイグレーション周りの設定が済んでいるものとします。

devise + devise_token_auth のセットアップ手順はこちらの記事が詳しかったです。


トークン認証だとgraphiql使えない

トークン認証を利用している時にgraphiqlを使う方法をググってもHackしたやり方しか出てこなかった(jsでXHR送るみたいな、、、)ので、
Altairを使って認証をパスするようにします。

Altairのダウンロードページはこちら


まず、curlでログインのリクエストをして認証トークンを取得します。(Userは作成されているものとします。)


$ curl -i localhost:3000/auth/sign_in -X POST -d  '{"email":"tanaka@example.com", "password":"test1234"}' -H "content-type:application/json"

HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Content-Type: application/json; charset=utf-8
access-token: 7VQ68wVMh8bPUN5ckr0CfQ
token-type: Bearer
client: NihWpbgns0SDpI3HURikfw
expiry: 1609249216
uid: tanaka@example.com
ETag: W/"3805fe2871c8a4277c3d9174dcd5c249"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: ecb32107-da6b-4bbe-86e9-678dcc01cf55
X-Runtime: 1.022058
Vary: Origin
Transfer-Encoding: chunked

ダウンロードできたら、Altairを開いて、

f:id:kossy-web-engineer:20201215224440p:plain

左上のAltairのアイコンの下のマークをクリックしてください。

グレーアウトしてモーダルが表示されるので、以下のようにkeyとvalueを入力します。(valueは先ほどcurlで叩いたレスポンスヘッダーの値を入れてください)

この状態でリクエストを投げると、認証をパスできます。
f:id:kossy-web-engineer:20201215224533p:plain




勉強になりました。