2008-11-18 62 views
2

是否有一個託管代碼(無需添加COM組件或包裝調用到C++例程)以將集成安全性添加到C#託管代碼程序集?集成安全

即我想編寫一個客戶端 - 服務器系統,其中服務器使用Remoting而不是IIS,但我希望客戶端自動將其憑據傳遞到服務器,就像瀏覽器在與具有集成的IIS服務器安全啓用...

可以這樣做嗎?如果是這樣,那裏有一些例子?

+0

你的意思是你想獲得Windows登錄憑據? – configurator 2008-11-18 14:32:17

+0

不,我知道該怎麼做......我想知道如何將集成安全證書通過線路傳遞到服務器,就像瀏覽器對IIS Web服務器執行的操作一樣......沒有實際傳遞登錄名和密碼...(我認爲瀏覽器通過一些協調的令牌,服務器可以驗證) – 2008-11-18 14:36:37

回答

-1

當你說「遠程代替IIS」時,你究竟是什麼意思?遠程處理端點(服務器端)通常託管在IIS中,因爲這會爲您提供大量免費的內容,如身份驗證,通過負載均衡進行擴展 - 特別是對於單數據類型對象 - 也就是說,您不想保留狀態用於連續調用端點。

您可以使用HTTP棧也XP/SP2及以後直接利用HTTP.SYS驅動程序(這是自動爲您BTW handleded)的客戶端應用主機一個遠程端點。

無論如何,對於使用NTLM憑據進行自動登錄,我建議您在IIS中主持遠程處理,並使用System.Net.CredentialCache.DefaultCredentials作爲您的客戶端應用程序的客戶端憑據。這會將上下文憑證傳遞給服務器應用程序,假定當前的安全區域(Int​​ranet/Internet/trusted/etc)允許它。

-Oisin

+0

我的意思是不使用IIS ...使用tcp/ip通道代替使用System.Runtime.Remoting和System.Runtime.Remoting。 Channels.Tcp: RemotingConfiguration.RegisterWellKnownServiceType(); – 2008-11-18 14:51:16

+0

因爲我想使用TCP二進制協議 - 不想承擔由IIS實施的限制,以獲得免費的東西, ......這正是我的問題...我如何做這個(認證自己 – 2008-11-18 14:54:33

2

.NET 2有NegotiateStream,TCP遠程處理使用它來提供SSPI。