HTTPでアクセスできる機器があり、この機器はBasic認証とDigest認証の両方に対応しています。
(設定によりBasic認証、Digest認証、Basic認証+Digest認証と変更できます)
この機器にアクセスした時HTTPヘッダに
HTTP/1.1 401 Authorization Required
Date: ~
Server: ~
WWW-Authenticate: Basic ~
WWW-Authenticate: Digest ~
Connection: close
といった感じで両方の認証方式の情報が返ってきます。
(片方の認証方式の設定の場合は当然片方の情報しかありません)
こういう機器のように401のヘッダで両方の認証方式の情報が書いてある場合、
下記のようにアクセスした時はBasic認証とDigest認証のどちらで認証されるのでしょうか?
VB.NET
1 Dim url As String = "http://~" 2 Dim webreq As System.Net.HttpWebRequest = DirectCast(System.Net.WebRequest.Create(url), System.Net.HttpWebRequest) 3 4 'CredentialCacheの作成 5 Dim cache As New System.Net.CredentialCache() 6 'Digest認証の情報を追加 7 cache.Add(New Uri(url), "Digest", New System.Net.NetworkCredential(UserName, Password)) 8 'Basic認証の情報を追加 9 cache.Add(New Uri(url), "Basic", New System.Net.NetworkCredential(UserName, Password)) 10 11 '認証の設定 12 webreq.Credentials = cache 13 14 'HttpWebResponseの取得 15 Dim webres As System.Net.HttpWebResponse = DirectCast(webreq.GetResponse(), System.Net.HttpWebResponse) 16 17 '受信して表示 18 Using st As System.IO.Stream = webres.GetResponseStream() 19 Using sr As New System.IO.StreamReader(st) 20 Trace.WriteLine(sr.ReadToEnd()) 21 End Using 22 End Using 23
実際に機器があり実験できればいいのですが、実験環境が用意できない状況でテストが行えません。
当方としては
機器の設定Basic認証 →Basic認証を行う
機器の設定Digest認証 →Digest認証を行う
機器の設定Basic認証+Digest認証 →Digest認証を行う
というふうに動作して欲しいと考えております。
認証方式の優先順位の指定方法がありましたらご教授下さい。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。