ベーシック認証とOAuthについて

ちょっとしたapiを作ることになってどういった認証方法が良いんだろう?と思って調べたら以下の3つがあるっぽい。

・ベーシック認証
・アクセストークンの発行
・OAuth2.0

ベーシック認証では、AuthorizationヘッダーにID/PASSを含めて認証を行う。ID/PASSはbase64エンコードする。認証エラーの場合は、ステータス401でWWW-Authenticateヘッダーで返却される。

アクセストークンと違ってベーシック認証ならapacheレベルで制御できるので、スクリプト制御よりも負荷が低いはず。ただ普通ID/PASSってDBに持っているはずなので、それだとベーシック認証ができない気がする。何か方法があるのかな?

2010年twitterでベーシック認証によるapiアクセスが廃止となりOAuthに変更されたらしい。OAuthはID連携をセキュアに行う認証プロトコルのこと。

OAuhtは現在2.0になっているらしい。
OAuth 2.0 Bearerだとベーシック認証に近いらしい。(YConnectとか)

ベーシック認証でやる場合は、sslが必須となるだろう。またトークンならば最悪漏れても影響がそのAPIのみに絞られるためssl無しのベーシック認証よりは安全だといえる。

またトークンの再発行も簡単にできるので、柔軟性はトークンが良いかもしれない。

勉強になったページ
Google グループ
ぶいてく: Web API認証について

API参考仕様
REST APIの共通仕様 | cybozu.com developer documentation
PHP APIドキュメント | WebPay: 開発者向けクレジットカード決済サービス
IPアドレス制限とBasic認証を設定する | cybozu.com共通管理 ヘルプ