最近は認証周りについて調べていることが多いのでOAuth(おーおーす)について簡単に調べたことを書いてみます。
概要
Wikipediaより
OAuth (オー オース) は、権限の認可(authorization)を行うためのオープンスタンダードである。
んーむずいですね。
アクセストークンを行うためのプロトコルと言っている人もいました。
厳密な定義はよくわかりませんが、どんなことをしてるのか見てみましょう。
セキュリティがばがばなサーバ
あるユーザのデータを所持しているサーバがあって、そこにクライアントアプリからそのデータをリクエストするモデルを考えてみましょう。
サーバ <ーーデータくださいーー クライアント
ーー どうぞ ーー>
このままだと誰でもデータを持っていかれてしまいますよね。
そこでアクセストークンを使用します。
アクセストークン
クライアントアプリがユーザのデータをリクエストするときに、アクセストークンを提示します。サーバはそのアクセストークンをチェックして、データを渡していいユーザなのか検証を行います。
サーバ <ーー(アクセストークン)データくださいーー クライアント
このアクセス
トークンなら
大丈夫そう
ーー どうぞ ーー>
これなら悪意のあるクライアントアプリがいてもトークンで検証するので、指定のユーザだけにデータを渡せますね。
アクセストークンを作成する
上記のやりとりをするためにはアクセストークンを作ってユーザに渡さないといけません。
そのためクライアントはまずトークンを発行するサーバにリクエストを送り、アクセストークンを受け取ります。
認可サーバ <ーートークンくださいーー クライアント
ーー どうぞ ーー>
この部分のところを標準化したのがOAuthです。
セキュリティを考える人は本当にすごいですね!