How do you determine if a REST webservice is using Basic, Kerberos, NTLM, or one of the many other authentication methods?
3 に答える
認証されていないリクエストを送信すると、サービスは「HTTP/1.1 401 Unauthorized」で応答する必要があり、応答には、WWW-Authenticate
期待される認証方式 ( Basic
, Digest
)、セキュリティ レルム、およびその他の特定の値 (Digets の nonce など)を指定するヘッダーが含まれます。 . したがって、サーバーが次のように応答する場合:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="example.com",
qop="auth,auth-int",
nonce="...",
opaque="..."
ダイジェスト認証が必要です。応答が次のようになっている場合:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="example.com"
次に、基本認証が必要です。一部の (不十分な) 実装のサーバー/サイトは Basic を正しく処理せず、最初にチャレンジする代わりに 403 Forbidden で直接応答します。
NTLM は、サーバーが 401 と WWW-Authenticate ヘッダーで値 を返すという点で似ていますNTLM
が、Microsoft 独自のものであるため、公式の公開仕様はありません。さまざまなリバース エンジニアリングの記述があります。
残念ながら、REST には、アプリオリに使用される認証方式を発見するためのサービスの WSDL スタイルの記述が付属していません。
リクエストを送信し、おそらく HTTP 401 コードを取得し、 ( RFC 2616に従って) レスポンスに含まれるWWW-Authenticate
ヘッダーを確認します。代わりに 403 やその他の奇妙なステータス、またはヘッダーの欠落が発生した場合は、コアの HTTP RFC に従わない Web サイトの作成者をののしり、トラフィックの盗聴を開始して、彼らが行った非標準的な混乱をリバース エンジニアリングしようとします。時間;-)。MUST
WWW-Authenticate
ブラック ボックスのシナリオの場合、通常はFiddlerに接続し、実際のトラフィックを調べます。