使用asp.net中的web api通过http进行身份验证

时间:2012-06-11 21:00:08

标签: asp.net asp.net-mvc asp.net-web-api

我看过很多关于保护asp.net web api的页面 - 包括:http://weblogs.asp.net/jgalloway/archive/2012/03/23/asp-net-web-api-screencast-series-part-6-authorization.aspxhttp://weblogs.asp.net/jgalloway/archive/2012/05/04/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way.aspx - 但是,我还没有看过KISS类型的例子。

如果我有一个web api,例如返回一个汽车列表 - 我正在与第三方(即不是我自己的网站或服务器/域)合作,他们想要查询(获取)和插入(发布) )一个类型的汽车列表,到我的数据库,我如何验证它们(通过https)?

他们只是添加(在他们的JSON GET / Post中)类似的东西:

[
{"username":"someusername","password":"somepassword",
{
"carTypeID":12345,
"carTypeID":9876}
"carTypeID":2468}
}
}
]

然后我可以获取用户名和密码,并在.net中检查我的会员资格数据库,然后“IfUserAuthenticated”继续处理其余的JSON?

或者有更好的方法吗?我听说过向标题添加细节等等 - 但是我不确定这是不是因为某种原因,或者使其复杂化。我也听说过将令牌设置回第三方 - 如果这是最好的方法,我给他们的指示是建立他们将使用我的API的应用程序的一面?

感谢您的任何建议/指示,

标记

3 个答案:

答案 0 :(得分:4)

如果您想保持简单,可以使用基本身份验证。通过SSL,它非常安全。它只需要在请求中添加标题:

Authorization: Basic <username:password encoded as base64>

您可以找到实现它的方法here

答案 1 :(得分:3)

您可以使用HTTP Basic身份验证和SSL。使用消息处理程序实现它非常简单,并且在许多平台上都支持开箱即用。 请参阅我的博客以获取示例(可以很容易地与您选择的成员资格提供程序集成)

http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-message-handlers/

答案 2 :(得分:0)

我为Web API编写了类似内容:
http://remy.supertext.ch/2012/04/basic-http-authorization-for-web-api-in-mvc-4-beta/

它现在在几个地方使用,我们自生产约2个月以来一直在使用它。似乎工作正常。