2017-08-28 4 views
0

OAuth2のImplicit Grantを使用して認証するWebアプリケーションがあります。OAuth2:client_secretの代わりにPKCEを使用する

私は、リフレッシュトークンを使用して、長い間セッションを有効にしたいと考えています。しかし、Webアプリケーションにclient_secretを安全に保存することができないため、従来のAuthorization Code grantは使用できません。

PKCEをclient_secretの代わりに使用するのは安全ですか、そうすることで一定のレベルのセキュリティが失われますか?

答えて

2

はい。 PKCEはそれを使用しないよりも安全ですが、 PKCEを使用した暗黙的な許可は、アクセス所有者と、おそらくは同じデバイスに存在する他のアプリケーションに公開される可能性があります。

PKCEは、主に、トランスポート層セキュリティ(TLS)によって保護されていない通信パス内の認証エンドポイントから返された認証コードを傍受するときから保護します。

暗黙のフローは、ブラウザベースまたはJavaScript ませモバイルデバイスまたは暗黙の補助金で認証コードグラント

+0

JavaScriptアプリケーションでPKCEでAuth Code grantを使用できないのはなぜですか? –

+0

できます。認証コード傍受攻撃の影響を受けやすい「パブリッククライアント」を使用していると仮定します。機密クライアントとTLSとノンスを適切に使用している場合は、セキュリティ上の利益があるかどうかはわかりません。 – jwilleke

0

を使用することができ、他のアプリケーションでOAuthクライアントアプリケーションにのみ適している、あなたはどちらPKCE、またリフレッシュを使用することができますトークン。セキュリティを強化したい場合は、Webアプリケーションにバックエンドを追加する必要があります。このバックエンドには、client_secretを格納できます(またはクライアント認証の代替方法を使用する)。 PKCEは必要ありません。

+0

しかし、空の秘密で許可コードの許可を使用するのはどうですか? PKCEは安全に保存できないため、秘密を置き換えるには十分でしょうか?バックエンドを追加するには、それを保護するために別の認証プロセスとセッションが必要です。認証にOAuthを使用するだけでした。 –

+0

PKCEは、認証コード傍受攻撃から保護するための認証コードの所持の証明として機能します。クライアント(悪意のあるものでも)が認証要求で認証コードチャレンジを送信できるため、クライアント認証には使用できません。 @JW。 –

関連する問題