コンテンツへスキップ
ものがたり
戻る

NetworkCredentialの怪

しばらく調べているのだけど、どうしてもCredentialCache.DefaultCredentialsと同等のNetworkCredentialが作れなく困っている。何かヒントがあったらおせえてくださいませ。

書いているのはこんなコード:

public static void Main (string [] args)  

{  

    WebRequest r = WebRequest.Create (args [0]);  

    r.Credentials = new NetworkCredential (  

        username, password, domain);  

    //r.Credentials = CredentialCache.DefaultCredentials;  

    Stream s = r.GetResponse ().GetResponseStream ();  

    Console.WriteLine (new StreamReader (s).ReadToEnd ());  

}

これでargs[0]で指定した、Windows統合認証を要求するサイトにアクセスする。コメントアウトしている行を有効にすると動作するので、コードそのものに問題は無さそうなのだけど、明示的にNetworkCredentialを作ると受け容れてもらえない。

ドメインには属していないので、KerberosではなくNTLMでやってくれると思っているのだけど(Firefoxからも認証できている)。domainはString.Emptyでもマシン名でも”WORKGROUP”でもダメだし、usernameは”hoge”でもUPNでもダメ。同じuser/pass/domainの組み合わせでProcess.Start()は出来ているし(ただProcess.Start()は間違ったドメイン名も無視するみたいだけど)。

認証関係は何か鬼門なのかなあ。他にもいろいろハマっている例を見かけた。うちのSebastienに聞いても「うちでは動いてるよ」って言われちゃったし。


この記事を共有:

前の記事
次の記事
2007-08-24