2011-02-18 60 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事件中,并在那里进行身份验证。