## 概要 [[🦉Fenice]]では[[Slack Web API]]を[[OAuth 2.0]]を使って利用している。ただ、[[Slackのアクセストークンはデフォルトで有効期限が設定されていない]]ため、[[アクセストークン (OAuth 2.0)|アクセストークン]]の漏洩に対して脆弱な状態となっている。 設定すれば期限を12時間にできるみたいなので、以下の順で対応していきたい。 1. [[Slackのアクセストークンに期限を設定]]する 2. [[リフレッシュトークン (OAuth 2.0)|リフレッシュトークン]]で[[アクセストークン (OAuth 2.0)|アクセストークン]]を更新する ## アクセストークンに期限を設定する [[Slack API]]の管理ページから。 ![[Pasted image 20240413194557.png]] 以下のようになっていればOKのはず。おそらく12時間後に切れる。 ![[Pasted image 20240413194718.png]] `oauth.v2.access`のAPI結果で `authed_user`に`expires_in`が含まれていればOK。また、[[アクセストークン (OAuth 2.0)|アクセストークン]]と[[リフレッシュトークン (OAuth 2.0)|リフレッシュトークン]]は`xoxe-`開始になっている。 ## リフレッシュトークンでアクセストークンを更新する 以下のAPIを使ってやってみる。 <div class="link-card"> <div class="link-card-header"> <img src="https://a.slack-edge.com/80588/marketing/img/meta/favicon-32.png" class="link-card-site-icon"/> <span class="link-card-site-name">Slack API</span> </div> <div class="link-card-body"> <div class="link-card-content"> <p class="link-card-title">oauth.v2.access API method</p> <p class="link-card-description">Exchanges a temporary OAuth verifier code for an access token.</p> </div> <img src="https://a.slack-edge.com/80588/img/services/api_200.png" class="link-card-image" /> </div> <a href="https://api.slack.com/methods/oauth.v2.access"></a> </div> > When you use grant_type=refresh_token and pass your refresh_token as an argument, this method refreshes an access token, whether bot or user. Read our guide to token rotation for more information. 以下をリクエストすることで、[[アクセストークン (OAuth 2.0)|アクセストークン]]と[[リフレッシュトークン (OAuth 2.0)|リフレッシュトークン]]を更新できる。 - `grant_type`に`refresh_token`を指定 - `refresh_token`に[[リフレッシュトークン (OAuth 2.0)|リフレッシュトークン]]を指定