繁体   English   中英

使用WPF客户端对MVC 4 Web Api进行身份验证和授权

[英]Authentication & Authorization with WPF Client to MVC 4 Web Api

我已使用Entity Framework Code-First和WPF-Application作为VS 2012中的客户端创建了MVC 4 Web Api。

我目前遇到的问题是,我必须从客户端启用身份验证并授权用户访问Api(例如:每个经过身份验证的用户都可以访问GET方法,但只有管理员可以使用POST或DELETE)。 我之所以使用MVC 4 Internet应用程序,是因为它已经包含了表单身份验证,在我尝试从客户端应用程序登录之前,它可以正常工作。 在花了一些时间研究我的问题之后,我意识到Forms Authentication主要应该与Web浏览器一起使用。 我什至找到了一些可能的解决方案,以使其通过CookieContainers与HttpClient一起使用(例如: 如何在HttpClient的HttpRequestMessage上设置cookie ),但是对我来说没有任何用处。
花了几个小时研究完成我要完成的工作的方法后,我感到完全陷入困境。
我已经读过有关SimpleMembershipprovider,BasicAuthentication,OAuth的文章,并且有人提到Thinktecture.Identitymodel,但是并不能真正确定哪个最合适。
如果与Web浏览器以外的客户端连接时,实际上没有任何方法可以使用表单身份验证,那么最佳的身份验证/授权方法是什么?

如果有人可以向我提示在这种情况下最有效的方法,我将非常高兴,因为经过数小时的研究,我只会越来越困惑。

在此先感谢您的帮助!

您应该能够很容易地做到这一点,但是您还没有说出问题所在。 你是

  1. 由于您尚未登录,无法访问您的Web api操作; 要么
  2. 无法使其强制执行授权(即您可以匿名访问操作)

对于第二种情况:

在服务器端的ASP.NET Web API中使用身份验证和授权有一个很好的概述,以及可以在操作上实施不同角色的各种方法。

使ASP.NET Web API安全的过程中 ,还有另一种适用于机器对机器的方法(即,您没有用户将其登录详细信息输入到应用对话框中的用户),但这并不适用。专注于使用SimpleMembershipProvider。 它使用令牌而不是使用框架的auth&auth组件(请小心使用此方法-很难正确实现自己的安全性)。

对于第一种情况:

从客户端看来,您好像有一些与用户交互的C#应用​​程序。 如果是这种情况(而不是机器对机器的情况),那么基于表单的方法仍然适用,并且您对Cookie所做的事情是正确的。 该方法将是:

  • 要求客户在您的应用程序中输入其用户名和密码
  • 向AccountsController上的LogIn操作发送请求,这将返回身份验证cookie,会话cookie等。
  • 存储从此(成功)登录返回的cookie(如果响应为“登录失败”,则通知客户端)
  • 然后在向Web API的请求中使用这些cookie

正如您已经在谈论使用HttpClient ,我想您知道您正在为此做些什么,因此没有提供代码示例。 我不会使用HttpClient来获得它的价值,而是使用HttpWebRequest ,它允许您通过HttpWebRequest.CookieContainer属性保留一个公共的CookieContainer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM