OAuth 2.0

OAuth 2.0

[16] OAuth 2.0 は、 Webアプリケーション認証に関する仕様です。

[17] OAuth 1.0廃止し置き換える後継版ですが、 OAuth 1.0 との互換性はまったくありません。そのため OAuth 1.0 を実装していたサーバーは現在も引き続き OAuth 1.0 を使っていることが多いですし、クライアントサーバーに応じて OAuth 1.0OAuth 2.0 を使い分ける必要があります。 とはいえ、新しいサーバーは、大抵 OAuth 2.0 を実装しているようです。

仕様書

プロトコル

[10] OAuth 2.0 では当事者が次の通り名付けられています。

[11] 次のような概念が存在します。

[12] OAuth 2.0 では認可鯖からアクセストークンを得るための方法が幾つもありますが、 いずれにせよ最終的にはクライアントアクセストークンを得ることになりますから、 資源鯖は多数の認証方式に対応せずとも、アクセストークンにさえ対応すれば良いこととなります。

資源鯖も参照。

[19] HTTP などの次の機能を使います。

[14] OAuth 2.0 には沢山のオプション機能や未定義としている部分があり、 相互運用性を妨げる虞があることを RFC も認めています >>13

[15] RFC は将来のプロファイルや拡張により改善されることを期待する >>13 としていますが、そのような態度で状況が良くなった例などあるのでしょうかね...

assertion

[23] RFC 7521 >>24OAuth 2.0 本体仕様に対する拡張として、 assertion への対応方法を規定しています。この方法にのっとった JWT (RFC 7523) や SAML 2.0 (RFC 7522) の利用方法が定義されています。

関連

HTTP 認証との関係

[27] HTTP認証には、Webブラウザーで使われる基本認証など、 いくつかの種類があります。 OAuth 2.0HTTP認証の一種として使うことができます。

OpenID との関係

[28] OpenID 参照。

OAuth 1.0 との関係

[29] 名前や開発の流れを除いて、 OAuth 1.0OAuth 2.0 は実は無関係で、互換性もまったくありません。用語すらもそれほど同じではありません。

[30] OAuth 2.0OAuth 1.0 の経験から実装者が苦しめられていた機能を簡略化していますが、 一方で OAuth 1.0 の経験を踏まえてより多様な用途に適応できるようオプションを増やして複雑化もしています。 どちらがより単純とも実装しやすいとも一概には言えません。

[31] IETF の手続き上は OAuth 2.0 の出版により OAuth 1.0廃止されました。しかし互換性がありませんから、 既存の OAuth 1.0 の実装はただちに OAuth 2.0 に移行することもできず、数年経っても両者が共存しています。 おそらく今後数年 (もしかすると十数年) この状況は続くでしょう。

[32] 新たに OAuth 1.0 を採用するメリットはありません。 実際新しいサーバーOAuth 2.0 を採用するものばかりのようです。 (クライアントは、サーバーが実装するものに従う必要がありますから、 場合によっては新たに OAuth 1.0 に対応しなければならないことがあります。) しかし OAuth 1.0OAuth 2.0 の両方を同時にサーバーが対応するメリットも特にないですし、 OAuth 1.0 への対応を打ち切ると OAuth 1.0 クライアントに既に発行したアクセストークンが無効になってしまうので、 それも容易ではない、ということで移行するわけにもいかないのです。

歴史

[1] OAuth 2.0 — OAuth ( 版) <http://oauth.net/2/>

[4] RFC 6819 - OAuth 2.0 Threat Model and Security Considerations ( ( 版)) <http://tools.ietf.org/html/rfc6819>

[5] draft-ietf-oauth-v2-http-mac-05 - OAuth 2.0 Message Authentication Code (MAC) Tokens ( ( 版)) <http://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05>

[6] draft-yusef-sipcore-sip-oauth-01 - The Session Initiation Protocol (SIP) OAuth ( ( 版)) <https://tools.ietf.org/html/draft-yusef-sipcore-sip-oauth-01>

[7] draft-ietf-kitten-sasl-oauth-16 - A set of SASL Mechanisms for OAuth ( ( 版)) <https://tools.ietf.org/html/draft-ietf-kitten-sasl-oauth-16>

[22] draft-ietf-oauth-assertions-18 - Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants ( 版) <http://tools.ietf.org/html/draft-ietf-oauth-assertions-18>

[25] RFC 7628 - A Set of Simple Authentication and Security Layer (SASL) Mechanisms for OAuth ( 版) <https://tools.ietf.org/html/rfc7628>

[26] RFC 7662 - OAuth 2.0 Token Introspection ( 版) <https://tools.ietf.org/html/rfc7662>