Asp.net mvc 出于对用户进行身份验证的安全原因,需要HTTPS

Asp.net mvc 出于对用户进行身份验证的安全原因,需要HTTPS,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我正在使用asp.net mvc4中的webapi服务编写用户身份验证服务, 当用户使用移动应用程序登录时,此服务将在移动应用程序中使用 在这篇文章后面,我已经为加密和解密编写了代码 错误: 出于安全原因,需要HTTPS 下面显示错误 当检入浏览器或fiddler时,它会显示相同的错误 public static void Register(HttpConfiguration config) { TokenInspector tokenInspector = new TokenInsp

我正在使用asp.net mvc4中的webapi服务编写用户身份验证服务, 当用户使用移动应用程序登录时,此服务将在移动应用程序中使用 在这篇文章后面,我已经为加密和解密编写了代码 错误:

出于安全原因,需要HTTPS

下面显示错误

当检入浏览器或fiddler时,它会显示相同的错误

public static void Register(HttpConfiguration config)
    {
 TokenInspector tokenInspector = new TokenInspector() { InnerHandler = new  
    HttpControllerDispatcher(config) };


        config.Routes.MapHttpRoute(
            name: "Authentication",
            routeTemplate: "api/User/{id}",
            defaults: new { controller = "User" }
        );

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional },
            constraints: null,
            handler: tokenInspector
        );
        config.MessageHandlers.Add(new HTTPSGuard()); 

    }

碰巧的是,我目前正在做一个项目,灵感来自于你提到的同一篇CodeProject文章,所以我非常熟悉它的工作原理

您得到的错误仅仅意味着您需要使用HTTPS(而不是HTTP)来访问api。比如:
https://localhost:port/api/values
。为了做到这一点,仅仅使用https作为URI方案是不够的。您需要生成一个自签名证书(或者使用一个真正的证书,如果您可以使用的话),然后将其附加到主机上——IIS或自托管有不同的步骤来实现这一点。有各种各样的网站可以帮助你完成这些步骤;似乎有一个非常全面的解释


如果您不关心HTTPS,请从代码中删除HTTPSGuard消息处理程序,并将其添加到
MessageHandlers
管道中的
Register
函数的最后一行删除。

hi感谢您的响应,在测试证书“CN=WebAPI令牌”时发现另一个错误。在CryptographyHelperClasses中,当我运行这个makecert-sr LocalMachine-ss My sha1-n CN=WebAPI Token-sk y exchange-pe时,它与许多参数有关
sk
y
应该放在一起,即
sky
。很好,我使用下面的链接创建了一个疑问,如果我在iis中托管此代码,Cercation会起作用吗?