Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有身份验证的MVC应用程序中的Web API基本验证_C#_Authentication_Asp.net Web Api_Asp.net Mvc 5 - Fatal编程技术网

C# 具有身份验证的MVC应用程序中的Web API基本验证

C# 具有身份验证的MVC应用程序中的Web API基本验证,c#,authentication,asp.net-web-api,asp.net-mvc-5,C#,Authentication,Asp.net Web Api,Asp.net Mvc 5,因此,我有一个C#MVC应用程序,使用Identity进行身份验证。我现在需要通过webapi向我的一些客户公开一些东西。而不是构建单独的应用程序、项目和部署。。。我只是在现有项目中添加了一个API控制器。为了让我的客户端保持简单,我决定使用Basic Auth,而不是强制我的客户端使用SSL连接到我的API 我遵循了这个非常有用的教程,在我的API中实现了Basic Auth: 问题是,他们的指令接管了整个应用程序的Auth 我需要我的MVC应用程序继续使用它当前使用的Identity Au

因此,我有一个
C#MVC
应用程序,使用
Identity
进行身份验证。我现在需要通过
webapi
向我的一些客户公开一些东西。而不是构建单独的应用程序、项目和部署。。。我只是在现有项目中添加了一个
API控制器。为了让我的客户端保持简单,我决定使用
Basic Auth
,而不是强制我的客户端使用
SSL
连接到我的API

我遵循了这个非常有用的教程,在我的API中实现了
Basic Auth

问题是,他们的指令接管了整个应用程序的
Auth

我需要我的
MVC
应用程序继续使用它当前使用的
Identity Auth
,并希望滚动我自己的自定义属性(如
[APIAuthorize]
),以便它只应用于我的
API控制器

我可能会四处闯荡,并尝试让它工作,但由于这是关于安全,我决定寻求一些专业帮助,如何最好地实现这一点。具体来说,我需要知道1)在我的
Global.asax中我应该做什么(如果有的话),因为上面的URL建议我这样做:

    protected void Application_Start()
    {
        GlobalConfiguration.Configuration.MessageHandlers
          .Add(new BasicAuthMessageHandler(){
             PrincipalProvider = new DummyPrincipalProvider()
           });
        //...
    }
但同样,这将接管整个应用程序的身份验证2)我需要在自定义身份验证属性中执行哪些操作才能无缝完成所有这些工作


当然,如果有更好的方法来完成这一切(不需要创建单独的应用程序或增加客户端的实现难度),那么我会洗耳恭听。

我使用一个过滤器属性来修饰我想向简单身份验证公开的操作。我不记得我从哪里得到这个代码(可能是stackoverflow,我只是没有链接,所以我不能为它索赔)

那么我就这样用它

[BasicHttpAuthorize]
public HttpResponseMessage MyExposedSimpleAuthAction()

我对这一领域完全陌生,我试图了解这一点。您是否有对实现此过滤器的API的示例调用?…它是否只传递给用户并传递纯文本或以某种方式进行编码?用户名和密码如何存储在configuration manager中?在您的示例中,BasicHttpAuthorize是独立工作还是需要更多的代码?
[BasicHttpAuthorize]
public HttpResponseMessage MyExposedSimpleAuthAction()