2011-02-18 51 views
0

對於我正在執行的項目,我正在使用SOAP服務從另一個系統訪問某些數據。我將SOAP服務添加爲ASP.NET(C#)項目的Web引用。可從InputStream獲得肥皂服務憑證

現在,該服務有點複雜,因爲用戶必須先用cookie進行身份驗證(不要問)。所以我們做的是:

  • 用戶訪問我們的網站。
  • 網站將用戶重定向到服務所在的服務器上的登錄頁面。
  • 用戶登錄,並執行FormsAuthentication.SetAuthCookie
  • 用戶被重定向回到我們的網站。然後將用戶轉發到應該包含來自web服務的數據的頁面。

該頁面實例化的WebService作爲這樣一個對象:

MyService.MyServiceservice = new MyService.MyService(); 

然後我把憑據(現在我做硬編碼):

service.PreAuthenticate = true; 
service.Credentials = new NetworkCredential("Wim", "mypass"); 

當我打電話的方法在該服務上,我希望包含服務器的服務器上的Global.asax能夠從請求中「捕捉」用戶名和密碼。但不知何故,我無法取它。

不要問爲什麼它必須這樣做,讓我們把它..不幸的:P

有誰知道如何來從服務器端該請求的用戶名和密碼,在最好Global.asax Application_BeginRequest。

+0

服務需要cookie還是需要憑據? – 2011-02-18 10:41:48

回答

1

服務使用哪種認證模式?基礎,摘要?等等。

如果它是基本的,那麼用戶名和密碼將作爲Base64編碼的字符串在http頭中,看起來像GWxhCGRpbjpvcGVuIFNlc2FtZG ==。

你需要解碼它,然後你會看到用戶名和密碼的格式爲user:password。

你在找什麼/期待找到用戶名和密碼?

附註: 如果您也在編寫服務,那麼您應該使用「身份驗證」模塊,而不是在Global中執行此操作。掛鉤到HttpModule中的全局OnAuthenticate事件中,並在那裏進行身份驗證。