雑メモ。
社内の Confluence(Confluence Data Center)に REST API を叩いて実現する簡易なスクリプトを作りたかった。
社内ツールへのアクセスには Microsoft の SSO でのログインが必要になっている。
例えばブラウザでコンフルにアクセスする際には、まず Microsoft の SSO にリダイレクトされてログインを行い、その後コンフルにリダイレクトされる。
そのためローカル PC から直接 REST API を叩こうとしても、通常通りのアクセストークン認証ではアクセスできない。
どうしたものかと思っていたけれど、cookie を使えば良いことに気づいた。
例えば以下の Chrome 拡張を使う。なお cookie を奪われると非常に危険なので、信用できる拡張のみを使うこと。
- Get cookies.txt LOCALLY - Chrome Web Store
- https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc
cookie をエクスポートしたら、例えば以下のように curl で -b オプションを使って cookie を指定すれば OK.
curl -b my-cookies.txt "https://confluence.my-company.com/rest/api/content?liimit=10"
あとは、ブラウザのデベロッパーツールのコンソール上で実行するという手もある。この場合 cookie は自動的に送信されるので、認証周りを意識する必要もなくなる。
例えば以下の JavaScript コードをデベロッパーツールのコンソールに貼り付けて実行すれば OK.
const url = "https://confluence.my-company.com/rest/api/content?liimit=10";
fetch(url)
.then((response) => response.json())
.then((data) => console.log(data));