【问题标题】:ssl channel wcf web api?ssl频道wcf web api?
【发布时间】:2012-01-23 15:45:22
【问题描述】:

我目前正在使用 WCF web api 开发一个 web api,它允许我编写 restful api。我担心的一个问题是安全性。出于这个原因,我决定使用运行良好的 OAuth 协议来保护我的 api。然而,团队得出的结论是,我们自己的应用程序不应该通过 oauth 授权,而是应该通过 http basic 授权,这意味着客户端应用程序应该发送用户名和密码。

所以我有两个问题:

  1. 如何设置 WCF Web Api 以使用 SSL,我使用的是 Web Api 预览版 6,并且项目是 MVC3 应用程序?
  2. 我有一个操作处理程序,它负责从客户端访问令牌创建 IPrincipal,然后将其注入操作参数,因此我可以访问用户的信息。我想在同一个操作处理程序中有一个条件,我可以检查授权方案是 OAuth 还是 http basic,然后在 http basic 的情况下,提取用户的凭据并根据我的数据库对特定用户进行身份验证,如果身份验证成功创建一个 IPrincipal 并将其注入到操作参数中。但是,正如我所看到的,每次使用 http basic 的应用程序向 api 请求某些内容时,我都必须访问数据库并进行身份验证。所以我的问题是:我是否走在正确的道路上,或者这可以通过其他方式实现?

任何答案将不胜感激。提前谢谢你!

【问题讨论】:

    标签: c# wcf asp.net-mvc-3 ssl wcf-web-api


    【解决方案1】:

    您为 WCF Web API 设置 SSL,就像您为通过 HTTPS 公开的任何其他 WCF 服务一样。如果您托管在 IIS 中,则需要为 HTTPS 配置站点绑定。如果您是自托管的,那么配置会涉及更多。有关所有详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms733768.aspx

    要针对自定义身份提供程序处理基本身份验证,您通常会在 IIS 中托管时使用自定义身份验证模块。有关如何执行此操作的示例,请参见 [http://custombasicauth.codeplex.com/]。如果您是自托管的,那么您可以使用自定义用户名 passworld 验证器。详情请见http://msdn.microsoft.com/en-us/library/aa702565.aspx

    是的,我相信您是正确的,除非您建立某种类似会话的语义,否则每个请求都需要身份验证。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 2011-10-08
      • 2013-01-08
      • 1970-01-01
      • 2011-10-11
      • 2011-07-14
      相关资源
      最近更新 更多