如何使用 HTTP 连接通过托管在 IIS 上的 ASP.NET 成员身份保护 ASP.NET Web API [重复]

Posted

技术标签:

【中文标题】如何使用 HTTP 连接通过托管在 IIS 上的 ASP.NET 成员身份保护 ASP.NET Web API [重复]【英文标题】:How to Secure ASP.NET Web API with ASP.NET Membership, hosted on IIS, using HTTP connection [duplicate] 【发布时间】:2014-11-03 15:08:36 【问题描述】:

我构建了一个使用 ASP.NET Web API 构建的 RESTful Web 服务,第三方客户端应用程序可以访问该服务。

开发 API 很简单,即使对于像我这样的新手也是如此。但是,安全性并没有那么多。 Web 应用程序未使用 SSL 连接这一事实进一步加剧了这种情况。我知道使用 SSL 连接不是强制性的,但安全的 Web API 要求我们使用 SSL 连接。

我已经看到了无数关于 OAuth 2.0、基本身份验证等的示例。但是基本身份验证不适合我们的需求,我还没有找到一个使用 ASP.NET 成员身份而不是身份的令人信服的示例。 (这可能与会员资格一起工作是我应该问的第一个问题)。默认的 asp.net 成员资格已被自定义成员资格提供程序覆盖。

我已经用了好几个小时试图找到一些可以为我指明正确方向的东西。 (也许我不是在寻找正确的开始)。

任何有类似经验的人可以为我指明正确的方向吗?

【问题讨论】:

我将此作为副本关闭。但是,我注意到重复的问题来自 2012 年。如果事实证明 2012 年的答案不再相关,那么请提出一个新问题并明确说明您知道重复的问题并且那里的答案不再相关。 【参考方案1】:

保护将被第三方客户端使用的 web api 的正确方法是使用 OAuth 不记名令牌,您可以在此处查看所有实现细节http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/

【讨论】:

感谢Taiseer,感谢您的精彩文章。但是我注意到,您使用了身份,而我们使用的是 asp.net 会员资格。实施是否会遵循相同的路线,会有什么不同?谢谢 它是一样的,它会在你验证用户名/密码凭据的地方有所不同。身份仅用于存储用户配置文件。 谢谢。欣赏:) @TaiseerJoudeh 您的解决方案对于了解一切如何运作非常有帮助,但我正在尝试按照您的解决方案使用 Web api 登录到 aspnet 会员数据库。我不知道如何更改您的解决方案,以便可以实施它以连接到会员数据库。你能分享一下这样做需要哪些代码更改吗?

以上是关于如何使用 HTTP 连接通过托管在 IIS 上的 ASP.NET 成员身份保护 ASP.NET Web API [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 IIS 中托管时如何从代码配置 WCF 服务?

如何解决 C# IIS 托管的 WCF NET TCP 服务超时问题

服务器拒绝了会话建立请求:WCF 托管在 IIS 上

从 Windows 应用程序访问托管在 IIS 上的 WCF 服务时出现问题

使用 IIS Express 托管网站(临时)

在 Apache 或 IIS 中托管时将 Backbone.js 与 CouchDB 连接