小编Ben*_*Ben的帖子

无法使用基本身份验证进行身份验证

我有一个ASP.NET WebApi服务,需要http基本身份验证(这是为了演示,而不是生产,所以这是基本身份验证的原因,而不是更安全的东西).Visual Studio IIS Express服务器运行良好,并通过自定义HTTP模块进行身份验证.

当我将站点部署到托管服务器时,它会失败并继续弹出登录屏幕.我向Fiddler验证了正在发送请求并且正在发送凭据.但它继续响应401未经授权的响应.似乎请求凭据在从客户端到服务器的时间内以某种方式丢失.我花了很多时间来尝试诊断这一点,使用Web API和IIS进行.NET身份验证似乎非常混乱.请帮忙!!

来自Fiddler的传出请求显示:

获取mywebsiteaddress HTTP/1.1
主机:我的网站地址
User-Agent:Mozilla/5.0(Windows NT 6.1; WOW64; rv:21.0)Gecko/20100101 Firefox/21.0
接受:/
Accept-Language:en-US,en; q = 0.5
Accept-Encoding:gzip,deflate
授权:基本YmJvbm5ldDE4Om9jdG9iZXIxNw ==
X-Requested-With:XMLHttpRequest
Referer:mysite
连接:keep-alive

以下是我的配置的相关部分(如果需要,我可以发布更多):

<modules>
  <add name="BasicAuthHttpModule" type="ITMService.Modules.BasicAuthHttpModule"/>
</modules>

<httpModules>
  <add name="BasicAuthHttpModule" type="ITMService.Modules.BasicAuthHttpModule"/>
</httpModules>

<authentication mode="Windows"/>
Run Code Online (Sandbox Code Playgroud)

我的自定义http模块(在visual studio的测试中工作正常).这主要取自asp.net上示例:

namespace ITMService.Modules
{
public class BasicAuthHttpModule : IHttpModule
{

    private const string Realm = "www.mysite.net";

    public void Init(HttpApplication context)
    {
        context.AuthenticateRequest += OnApplicationAuthenticateRequest;
        context.EndRequest += OnApplicationEndRequest;

    }

    private static void SetPrincipal(IPrincipal principal) …
Run Code Online (Sandbox Code Playgroud)

.net authentication iis httpmodule asp.net-web-api

2
推荐指数
1
解决办法
9361
查看次数

标签 统计

.net ×1

asp.net-web-api ×1

authentication ×1

httpmodule ×1

iis ×1