S.F. Page

Programming,Music,etc...

OAuth2

現在のWeb APIはOAuth2.0を基本認証としているものが多い。例えばYoutube Data APIではOAuth2.0認証でないと読み書きができなかったりする。このOAuth2.0というのはそもそも「ユーザーがWebアプリケーションに対してユーザー自身のリソース提供を許認可するための仕組み」である。たとえば私のアプリケーションがTwitter APIを使用したものであると、アプリケーションからTwitterに対して許認可要求を出し、それを受け取るとTwitterがユーザーに対して「私のアプリにTwitterの情報を提供してよいか?」と問い合わせるのだ。そこでOKを出すとTwitterから私のアプリにリソース利用許可が出てAPIにアクセスでき、私のアプリはさまざまな情報提供をユーザーに対して行うのである。

この仕組みは不特定多数の人がその人自身のリソース(つまりユーザー=リソース)を使用するようなWebアプリには向いている。でも今回私がやろうとしているのは「さまざまなWebアプリ・Webサービスに格納している私のリソースをひとまとめにして不特定多数の人に見せる」というものなのでそもそもこの認証システムとは相性が悪い。不特定多数の人が見るのは私のリソースなので、ユーザー≠リソースだから。こういう用途にはOAuthは使いずらい。ではどうすればいいのか。

調べてみるとAPIはやはりそういう用途のため(だけではないと思うけど)の別の認証の仕組みを持っていることがわかった。たとえばJWTであったり、GitHub APIのPersonal access tokensである。Twitter APIも似たようなものがある。これであれば私のリソースに対してWebアプリがきちんとアクセスし、情報提供を行うことができる。