tab APIサーバはOAuth2の署名無しトークン(Bearer Tokens)を利用して認証状態を維持する仕様となっています。 ここではトークンの取得方法および認証状態を維持する方法について説明します。
なおOAuth2関連の仕様は下記ページを参考にしてください。
OAuth2の認証手順において、あらかじめサーバ側にアクセスするクライアントを登録しておく必要があります。 tabは、クライアント登録の際にClient IDとClient Secretのペアを発行します。
クライアントは、このペアと他に必要な認証情報を送信することでAccess Tokenを得ることができます。
クライアントの登録時に必要です。
認可コードによるAccess Token取得の際には、tabからクライアント側に認可コードを付与するため、このURIにリダイレクトを行います。
Access Tokenは一定の認証手順を行なうことで得られます。
取得した後は、リクエストヘッダにこのAccess Tokenを埋め込んで通信することで認証済みの状態となります。
Access Tokenは短い時間の有効期限しか持ちません。(数十分程度)
Access Tokenが有効期限を超過して無効になった場合は、後述のRefresh Tokenを用いて新しいAccess Tokenを再発行する必要があります。
Access Tokenと同時に得られます。Refresh Tokenを利用して新しいAccess Tokenを得る事ができます。
Access Tokenの有効期限が短いのでRefresh Tokenは頻繁に利用することになります。Refresh Tokenの有効期限は数日間程度です。
tab APIサーバは認可コードによる認証方式を提供します。
認可コードによる認証は、以下の方法で実現します。
クライアント側にはユーザの認証情報を持つ必要がないので、よりセキュアな方法だと言えます。
ユーザ認証のためブラウザでのアクセスを必要とするため、クライアント側からブラウザベースの制御が必要となります。
下記ではWEBアプリケーションの場合を例に説明しています。WEBアプリケーション以外のクライアントによる開発を行なう場合は、 こちら をご参照ください。
以下の説明中には下記用語が現れます。
用語 | 説明 |
---|---|
tab | WEB版tabサーバを指す |
tab API | tab APIサーバを指す |
client | APIを利用するクライアントを指す |
CID
, CSECRET
, https://example.com/oauth2_callback
と表記するhttps://tab.do/oauth2/authorize?response_type=code&client_id=CID&redirect_uri=https%3A%2F%2Fexample.com%2Foauth2_callback
https://example.com/oauth2_callback?error=<エラーメッセージ>&error_description=<エラー内容詳細>
にリダイレクトされるcode
が認可コードとなるhttps://example.com/oauth2_callback?code=cb532e8a1684140516d864c0424978d4
以下のAPIを用いて、Access Tokenを再発行することができます。
認可に成功してAccess Tokenが発行された場合、以下のような応答が返されます。ここでAccess Tokenとその有効期限、Refresh Tokenを得ることができます。
{
"access_token": "787e93ce1abfdd8e96542bd224974360",
"token_type": "bearer",
"expires_in": 899,
"refresh_token": "8846013e3add33718eb59633298ef5dd"
}
キー名 | 説明 |
---|---|
access_token | 発行されたAccess Token |
token_type | 発行されたトークンの種別。bearer固定 |
expires_in | access_tokenの有効期限(秒)。この秒数の間のみ有効 |
refresh_token | 発行されたRefresh Token。このトークンを用いてAccess Tokenの再発行を行なうことができる |
下記の形式でHTTPリクエストヘッダに追加して送信することで、tab APIサーバに認証情報を渡すことができます。
Authorization: Bearer <Access Token>
詳細はこちら を参照してください。
OAuth2では署名無しAccess Tokenを利用するため、Access Tokenを通信する経路は暗号化されていなければなりません。
具体的にはTLS(https)を利用します。
こちら でOAuth2認可コードの実装サンプルを見ることができます。