GNAP:次世代のOAuth

その年は2012年で、OAuth 2と呼ばれる改訂されたセキュリティプロトコルがWebを席巻し、ユーザーがセキュリティプロバイダーを使用してWebサイトに簡単にログインできるようにしました。AWSのCognitoからOktaまで、多くのシングルサインオンシステムがOAuthを実装しています。OAuthは、まったく異なるWebサイトまたはアプリケーションに対して「Googleで認証」または他のプロバイダーを使用できるようにするものです。

ビール祭りのように機能します。あなたは机に行き、あなたのID(そしていくらかのお金)で認証します、そして彼らはあなたにトークンを与えます。そこから、各ビールテントに行き、トークンをビールと交換します。個々の醸造者は、IDを確認したり、支払いをしたかどうかを尋ねたりする必要はありません。彼らはただトークンを受け取り、あなたにビールを渡します。OAuthは同じように機能しますが、ビールの代わりにWebサイトを使用します。

悲しいことに、OAuthは2020年が提供する最高のビール祭りです。

FusionAuthのDanMooreに、OAuthとGNAPと呼ばれる代替案について話しました。これは、Gがないと「仮眠」と発音される可能性があります。発音は、セキュリティが本当にエキサイティングな分野であるという考えを促進します。GNAPは、OAuthのいくつかの制限に対処し、新しい機能を追加します。

なぜOAuthを置き換える、またはむしろ増強するのですか?OAuthはブラウザを中心に設計されました。リクエストを行う発信者がHTTPリダイレクトを処理できることを前提としています。このWebブラウザーの焦点は、モバイルアプリや「モノのインターネット」上のあらゆる種類の「モノ」の障害です。さらに、2007年のようなOAuthパーティでは、JSONの代わりにフォームパラメーターを投稿する必要があります。

OAuth仕様は一部の場所であいまいであり、2012年以降世界が変化しました。RFCとBCPが多数あり、基本的には、より多くの機能、セキュリティの向上、および一般的な互換性のために実装する必要のあるアドオン仕様です。 OAuth 2.1と呼ばれる別の取り組みでは、これらのアドオンの一部をより一貫性のある単一の仕様にまとめることを望んでいます。 OAuth 2.1の動機のいくつかについては、Oktaの投稿「電球を変更するのにいくつのRFCが必要か」のLeeMcGovernを参照してください。 OAuth 2.1は、GNAPとは異なり、仕様のスタックを1つの仕様に結合する以外に、新しい重要な変更がない単なる増分リリースです。

GNAP仕様はまだ初期段階にあります。GNAPの作成者は、OAuth 2.1よりもさらに進んで、プロトコル自体の性質を変更することを計画しています。HTTPパラメーターを使用する代わりに、JSONを使用できます。アプリケーションエンドポイントは検出可能です。リダイレクト(またはその周りのさまざまなハック)をサポートする必要はありません。ムーアは、これらの変更を「開発者の人間工学」という楽しい用語で呼んでいます。

GNAPの主要な目標は、誰がリソースを要求するか(RQ)と誰がリソースを所有するか(RO)を分離することです。

IETF

GNAPは、次のような新しいセキュリティ機能のサポートも提案しています。

  • 非同期およびアプリケーションURLの起動。これらは、クライアントがリダイレクトなしで認証できるようにするさまざまな認証パスです。GNAPを使用すると、アプリケーションは、リソースサーバーと承認サーバーが直接アクセスできないサードパーティのリソースに対して認証することもできます。
  • 継続をリクエストします。これらにより、クライアントは認証プロセス中にリダイレクトやその他の認証の詳細などをネゴシエートできます。また、クライアントが追加の特権やアクセストークンについてネゴシエートできるようにします。
  • 複数のアクセストークン。これらにより、クライアントは、たとえばユーザーと管理者の両方として、一度に多くのリソースに対して認証できます。
  • 送信者制約トークン。DPOPおよびMTLSと呼ばれるこの機能のためのOAuth2へのアドオンがありますが、GNAPはこれをプロトコルに直接組み込みます。ビールテントの例に戻ります。トークンを渡すときに、販売者の耳にパスワードをささやく必要がある場合はどうなりますか?トークンがドロップされた(または傍受された)場合、ベアラはパスワードを持っていないため、問題にはなりません。
  • そしてGNAPはKerberosの幽霊を悲鳴を上げさせます。

いいね?今日からGNAPを使い始めることができますか?コラボレーションに興味がある場合は、GitHubの既存の提案に組み込まれたプロトタイプの1つをフォークできます。

ムーアによれば、著者は2022年にGNAPをリリースすることを目指しています。2020年の毎日は通常の年の1週間のようであるため、GNAPは遠い道のりです。ただし、GNAPワーキンググループは協力者を探しています。メーリングリストに参加して、フィードバックや専門知識を提供することができます。世界のすべてを修正することはできないと思いますが、少なくともOAuthの修正を支援することはできます。