如何处理ASP.NET身份验证

时间:2009-12-02 15:54:41

标签: asp.net httpwebrequest custom-membershipprovider

我有以下问题: 我想使用asp.net页面保护对IIS下托管的某些文件的访问。 该页面将使用以下命令从另一个应用程序调用:

var request = WebRequest.Create("www.smth.com/protectData.aspx") 
              as HttpWebRequest;
request.Credentials = new NetworkCredentials("john doe", "john"); 
request.PreAuthenticate = true; 
var response = request.GetResponse(); 

如何读取被调用页面上发送的凭据(protectData.aspx)?

我有代码以验证凭据...我已尝试实现自定义成员资格,但HttpContext.Current.User为空。 aspx页面托管在一个Web应用程序中,该应用程序承载经过身份验证的WCF服务 自定义政策:

  

system.serviceModel>
      serviceAuthorization principalPermissionMode =“Custom”
          authorizationPolicies
             添加policyType =“CustomPolicy.CustomPolicy,CustomPolicy”/>
          authorizationPolicies
       system.serviceModel

对于aspx页面我暂时没有安全性,基本上我只想从请求中获取凭据并使用现有代码验证它们。

感谢任何帮助, 阿德里安

1 个答案:

答案 0 :(得分:1)

你基本上有两种选择。您可以使用HTTP传输身份验证或基于表单的身份验证。

对于传输身份验证,您必须设置IIS以保护客户端尝试访问的资源。此资源可以是您的文件,也可以是ASPX页面。然后,ASPX页面将能够读取HttpContext.Current.User变量,并能够确定该用户是否可以访问该资源。

对于基于Forms的身份验证,IIS不需要对请求进行身份验证。相反,您将一个表单发布到webform,然后可以查看请求中的用户名/密码并决定是否允许访问。

Forms Based Auth(FBA)的一种变体是在POST正文中发布用户名/密码,然后ASPX页面可以读取,解码并决定是否允许访问。