はじめに
APIについて調べている際にログインとOAuthについて触れる機会があったのですが、
そもそもログインの仕組みやOAuthについて詳しく説明できる状態ではなかったので、
いい機会だと思いまとめました。
OAuthとは
OAuthとは一言でいうと「APIにおいて認可を行うための仕組み」です。
例えば、あるサービスAが別のサービスBのAPIを利用した機能を提供しているとき、
サービスBに登録しているユーザーがサービスAを使う際には、
サービスAはサービスBにアクセスして、そのユーザーの情報(リソース)を利用したいはずです。
その際に、ユーザーがサービスAに対してサービスBに登録しているリソースを使っていいよ〜、と
許可することのできる仕組みのことを言います。
図で示すと下図のようになります。
このようにOAuthを利用してログインすることのメリットの1つとして、
ユーザーはサービスAに対してサービスBのパスワードを渡すことなくログインできる
、ということが挙げられます。
別のサービスに対して不要にパスワードを渡さないので、
高いセキュリティを維持することが可能です。
OAuthのバージョン
OAuthには1.0と2.0というバージョンが存在します。
2.0は2012年10月にRFC6749として標準化されており、
特に理由がなければ2.0を利用するのが良いでしょう。
OAuthを利用する利点
上記で挙げたセキュリティ上の理由以外にもOAuthを利用することには利点があります。
それは、OAuthは標準化され、広く認知された仕組みであるということです。
広く認知されているため、サーバー、クライアントともに多くの言語でライブラリが提供されており実装が容易です。
アクセストークンの渡し方
先の図でOAuthを使った認証にはアクセストークンを使用していることを説明しました。
ではアクセストークンはどのように渡されるのでしょうか?
図の4.トークンを渡す
では、レスポンスヘッダでアクセストークンを渡しています。
このとき、アクセストークンはaccess_token
というヘッダに格納されます。
また、token_type
にはbearer
が指定されます。
ここで受け取ったトークンをAPIへのアクセス時に送ることでアクセスが可能になります。
まとめ
今回OAuthについて学ぶことで、APIでの認証の仕方についての理解が深まりました。
一方でOAuthを使用する際のデメリットや注意点についてはまだちゃんと理解できていないので、
今後更に学んでいきたいと思います。