7

node.jsクライアントからの安全な ( https) 接続を必要とするベースの Web アプリがあります。私が望むのは、一部のパスではクライアント証明書認証が必要であり、他のパスでは必要ないということです。

たとえば。ユーザーがhttps://www.example.com/mainにアクセスすると、サーバーはクライアント証明書認証を必要としません (したがって、ブラウザーは何も要求しません)。しかし、ユーザーがhttps://www.example.com/secureに移動すると、クライアント証明書による認証が必要になります (そのため、ブラウザーは、使用する証明書を選択するためのダイアログを表示します)。

どうすればこれを実現できますか。オプションにパスするrequestCert:trueと、 クライアント証明書認証を強制できます。このアプローチの問題は、すべてのパスにクライアント証明書が必要なことです。rejectUnauthorized:truehttps.createServer

4

4 に答える 4

0

あなたが何を望んでいるのか正確に理解しているかどうかはわかりません..しかし、エクスプレスを使用している場合、私の理解に基づいて、単純なミドルウェアでこのことを管理できます..そのミドルウェアでは、どちらのリクエストもhttpから来ているかを追跡できますまたはこれを介してhttps

HTTPS 接続には req.connection.encrypted (SSL 接続に関する情報を含むオブジェクト) があります。HTTP 接続には req.connection.encrypted がありません。

また(ドキュメントから):

HTTPS サポートでは、request.connection.verifyPeer() および request.connection.getPeerCertificate() を使用して、クライアントの認証の詳細を取得します。

これが役立つことを願っています..

于 2013-01-23T09:09:47.953 に答える