2017-08-11 12 views
1

JavaScriptベースのアプリケーションでRFC 6749(OAuth 2.0)に記載されている認証コードフローを実装しようとしています。 Webサーバーバックエンドを機密クライアントとして使用して、アクセストークンを保護し、承認サーバーから返されたトークンを更新し、JavaScriptフロントエンドに渡さないようにする必要があることを理解しています。フロントエンドから保護されたリソースへのすべてのリクエストは、アクセストークンを要求に添付してプロキシするWebサーバーのバックエンドを経由します。ウェブアプリケーションでベアラトークンを保護する方法

JavaScriptのフロントエンドにこれらのトークンを安全に使用させるにはどうすればよいですか。私は、Webサーバー上でセッションを設定し、セッションを識別するクッキーを返す必要があると仮定します。しかし、これは、JavaScriptアプリケーションが、Webサーバーに格納されているベアラトークンに直接アクセスしたのと同じ権限を与えるクッキーを持っていることを意味します。どのようにトークンを保持するWebサーバーがセキュリティを強化するのでしょうか?

+1

認証コードフローを使用する必要がありますか、それともそれを選択しましたか? –

+0

私はリフレッシュトークンをサポートする必要があり、仕様の[セクション4.2](https://tools.ietf.org/html/rfc6749#section-4.2)は、暗黙のグラントタイプがそれらをサポートしていないと言っています。 –

答えて

0

Webサーバーバックエンドを機密クライアントとして使用して、アクセストークンを保護し、承認サーバーから返されたトークンを最新表示し、JavaScriptフロントエンドに渡すことができないことを理解します。

いいえ、それはOAuth2の流れと目標の誤解です。ここで

はのOAuth2主な目標である:(あなたのアプリケーション(JavaScriptのプログラムは、ブラウザ内で実行され、たとえば缶、ウェブサーバ、両方、など) は、ユーザーの資格情報を知っている必要はありませ MUST最もユーザの代わりにサービスにアクセスするためのログイン/パスワードのペアの時間)を指定します。ここで

はのOAuth2がこの目標を達成するために使用されなければならない方法です。

  • ニーズに応じて、それはブラウザ内で実行されているJavaScriptベースのアプリケーションを持っている(すなわちないノード.jsアプリケーション)では、OAuth2 暗黙のフローを使用する必要がありますが、認証コードフローは使用しないでください。もちろん、アプリケーションがブラウザで実行されているため、サービスプロバイダが提供するリソースにアクセスするための資格情報を保持することはできません。ユーザーは、アプリケーション上の新しいセッションごとにサービスプロバイダーに認証する必要があります。

  • アプリケーションは、ユーザーがログインしていないとき、またはアプリケーションが資格情報を保持することが可能であるときに、サービスプロバイダにアクセスする必要があります(アプリケーションがそのユーザーを識別するために、独自の資格制度を持っているので)、あなたのアプリケーションはしていませんブラウザで実行されているJavaScriptプログラムのみに依存します。これは、Webサーバーのみ、またはこのサーバーと通信するWebサーバーとJavaScriptプログラムの両方に依存している可能性があります。その場合は、承認コードフローを使用する必要があります。だから、

、結論として、あなたはあなたが認可コード・フローを使用していたと思ったので、あなたのアプリケーションにWebサーバーを追加することにしました。しかし、あなたの場合は、おそらくこのコードフローを使用する必要はないため、アプリケーションに適切なコードフロー、暗黙のコードフローを選択する必要があります。これで、アプリケーションを実行するWebサーバーを追加する必要はありません。

どのようにトークンを保持するWebサーバーがセキュリティを強化していますか?

これは特別なセキュリティを提供しません。トークンを保持するWebサーバーを持つことは、ユーザーがアプリケーションにログオンしていないときに、アプリケーションをバックグラウンドでユーザーに代わってアクセスさせる単純な方法です。

+0

しかしOPは、暗黙のフローがサポートしていないリフレッシュトークンを使用したい。この場合、彼のアプリケーションは独自のWebサーバーセッションを必要とし、独自の資格情報で保護されているため、トークンをサーバーに安全に保存できます。 OAuth2を使用して認証プロセスを委任する利点がなくなったように見えます。なぜなら、まずセッションに対して別の認証プロセスが必要になるからです。または私は間違っていますか? –

関連する問題