私は既存のアプリケーションの委任されたログインシステムを構築するつもりです。 OAuthクライアント(Webアプリケーション)とOAuthサーバ(単純な認証とリソースサーバ)を実装しています。OAuth 2クライアントは本当にTLSを必要としますか?
これを念頭に置いて、私はこれは、特に私は、クライアント上でTLSを使用する必要がありますことを私に警告し
3.1.2.1. Endpoint Request Confidentiality
If a redirection request will result in the transmission of an
authorization code or access token over an open network (between the
resource owner's user-agent and the client), the client SHOULD
require the use of a transport-layer security mechanism.
Lack of transport-layer security can have a severe impact on the
security of the client and the protected resources it is authorized
to access. The use of transport-layer security is particularly
critical when the authorization process is used as a form of
delegated end-user authentication by the client (e.g. third-party
sign-in service).
:現在OAuth 2 draft(バージョン22)で、次のセクションに出くわしました。もちろん、サーバー上でHTTPSを使用していることもありますが、すべてのクライアントでHTTPSを使用することは不可能ではないにしても困難です。
セキュリティに関する私の限られた理解から、誰かが認可付与を盗むことができると思います。これは私の質問に私をもたらします:
は、クライアント認証(クライアントシークレットを使用して)は、許可許可を使用してから、盗聴者を防ぐことはできませんでしょうか?(悪意のある当事者がクライアントの秘密を知らないので、うまくいけば)
もしそうでなければ、私は見ていないでしょう、もし私がこの仕事をするためにできることはありますか? HTTPSをクライアントに安全にインストールする必要はありませんか?たとえば、OAuth 1は役に立ちますか? (おそらくそれは追加のリクエストトークンステップを持っているからです)
P .:私は、シークレットではなくTLSクライアント証明書を使用してクライアント認証を行うことを計画していました。
私が正しく理解していれば、認証コードがクリアで送信されるのではなく、そのリソースがクライアントからブラウザに明確に送信されることが懸念されます。 (リソースサーバーは、クライアントとサーバー間の接続でTLSを使用してプライベートデータをプライベートに維持しようとしていましたが、クライアントはブラウザとクライアントの接続で明示的に送信して違反します)。 –
@Shtééfクッキーは認証コードです。 HTTPリクエストがプレーンテキストで送信される場合、このトラフィックを見ることができる人は誰でもWebアプリケーションにアクセスする必要があります。クッキーを保護しないと、何も安全ではありません。 – rook
私たちは同じページにいるとは思わない。 「認証コード」によって、私は、許可が与えられた後にサーバーが生成したトークンを意味すると理解しています。サーバーはリダイレクトURIのクエリにアタッチし、ユーザーエージェントに送信します。クライアントはリダイレクト要求でこれを受け取ります。おそらくプレーンなHTTP経由で受け取ります。 *まだ*に関連するクッキーはありませんが、クライアントはアクセストークンを取得してクッキーに関連付けます。私の質問は特に許可トークンについてです。私はクッキーが危険にさらされている可能性があることを知っています。 –