はじめに
REST APIの認証には、一般的にOAuth2、Basic認証、ヘッダ認証(トークン認証)等が用いられますが、一部のシステムではCookieへトークンをセットする方法が用いられる場合があります。
しかし、仕様の公開されていない内部API(そのシステム自身が使用するAPI)やWebブラウザからの利用を前提としているAPIを利用するには、Webブラウザからのアクセスと同様にログインページで認証を行い、認証後にレスポンスとして返されたCookieが必要となります。
Workatoでは、リクエスト時のパラメータを工夫することでCookie認証に対応することが可能です。
手順
1. Cookieの値を何らかの方法で取得します。
例えば、ログインフォーム等で認証が行える場合、認証完了後にレスポンスヘッダとして Set-Cookie
が返されます。また、Cookie認証用のAPIエンドポイントが存在する場合、Cookieへセットする値がレスポンスで返されます。
なお、Cookieの値を取得する際には、必要に応じてAWS LambdaとSelenium/Puppeteerを組み合わせる、Web RPAサービスを利用する等、外部のツールやサービスを組み合わせて対応しなければならない(Workatoだけで処理が完結できない)場合があります。例えば、アプリケーションによってはCSRFチェック等のセキュリティ対策により、単純にユーザー名とパスワードをログインフォームのPOST先URLのパラメータとしてセットしてリクエストを行うだけではログインが成功しない(不正なリクエストとして、エラーとなる)場合があります。
2.Variablesコネクターを追加し、変数(Variables)を追加します。
追加した変数上で手順1で取得した戻り値を加工し、配列に変換します。
[Set-Cookie ※手順1の戻り値のデータピルを指定]
.gsub('[','').gsub(']','').gsub('"','').gsub(' ','').split(';')
3.HTTPコネクターを追加し、APIリクエストに係るパラメータを設定します。
Cookieとしてサーバへ渡したい値をセットします。例えば、0番目の配列の値をCookieへセットしたい場合は、次の通りとします。
[Cookie ※手順2の戻り値のデータピルを指定][0]
以上の設定を行い、レシピを実行することで、Cookie認証を確認することができます。Cookie認証を必要とされている場合は、是非お試しください。