質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

5644閲覧

HttpWebRequestで認証方式の優先順位を指定する

YAmaGNZ

総合スコア10242

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2017/05/19 08:28

編集2017/05/20 08:51

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認証を行う
というふうに動作して欲しいと考えております。
認証方式の優先順位の指定方法がありましたらご教授下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

環境が出来たので実験してみました。

結果、掲載コードで
機器の設定Basic認証 →Basic認証を行う
機器の設定Digest認証 →Digest認証を行う
機器の設定Basic認証+Digest認証 →Digest認証を行う
と動作しました。

ただ、機器の設定Basic認証+Digest認証の時に、Basic認証を行おうとした場合、
Digest認証に関する記述を消さないとBasic認証になりませんでした。

投稿2017/05/23 11:29

YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問