2017-05-19 9 views
1

OwinセルフホストWeb APIでNTLM認証に問題があります。 NTLMは、サーバー側とクライアント側の両方で有効です。クライアントではRestSharpを使用しています。ホスト名でAPIにアクセスするとRestSharpとNTLM認証が機能しない

クライアント

_client = new RestClient(ConfigurationManager.AppSettings["UserAccessApi"]); 
_client.Timeout = 5000; 
_client.Authenticator = new NtlmAuthenticator(); 

サービス

var listener = 
(System.Net.HttpListener)app.Properties["System.Net.HttpListener"]; 
listener.AuthenticationSchemes = System.Net.AuthenticationSchemes.IntegratedWindowsAuthentication; 

app.UseWebApi(config); 

私はそれだけで、作品IPやChromeブラウザを介してこのAPIにアクセスする場合、ホスト名またはインターネットエクスプローラ経由のアクセスには、それがない場合にはしばらくない。私はこれがrestsharpに関連していると考えています。これはIEエンジンを使用するhttpclientを使用しています。私たちの会社では、ローカル/パブリックネットワークのセキュリティ設定がいくつかあります。誰も似たような問題を抱えていて、「IE設定の変更」の方法を使わずに克服する方法がありますか?

ホスト名ベースのコールヘッダー

enter image description here

IPベースのコールヘッダー

enter image description here

フィドラーのログ、第一バッチ - ホスト名のコール、第二バッチ - IP

enter image description here

答えて

1

Using AuthenticationSchemes.Ntlmは役立ちます。しかし、それはNtlmを強制するので、回避策のようなものです。

0

キャッシュ資格情報を使用してrestsharpにNTLMを使用させることができます。 NTLMのデフォルトの資格である

var url = ConfigurationManager.AppSettings["UserAccessApi"]; 
var credential = new CredentialCache 
{ 
{ 
    new Uri(url), 
    "NTLM", 
    new NetworkCredential(username, password) 
    } 
}; 
_client = new RestClient(url) 
{ 
    Authenticator = new NtlmAuthenticator(credentials) 
}; 

NetworkCredential、このような場合のために動作していないようです。

関連する問題