1

作为这个问题的后续行动:

WebAPI + Forms Authentication + SimpleMembershipProvider 在不应该使用 WindowsIdentity 时使用

我现在正在尝试实现一个消息处理程序,该处理程序在每个请求上设置主体,但我不确定如何将它与 simpleMembershipProvider 联系起来。我正在寻找一个设置主体并针对 simpleMembership 执行身份验证的示例。

4

1 回答 1

1

答案是“这取决于您计划在 Web api 上实施的身份验证机制”。

基本的 Http 身份验证?

这应该有效:

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

...而且似乎有更好/更简单的方法

http://leastprivilege.com/2012/10/23/mixing-mvc-forms-authentication-and-web-api-basic-authentication/

这里的想法是您将以纯文本形式发送您的凭据(希望您应该使用 https),并且消息处理程序(又名 DelegatingHandler)将获取这些凭据,使用您的简单会员提供程序验证它们,如果无效或设置返回 401如果他们没问题,就上去校长。

更复杂的机制?

与具有更复杂机制的基本 http 身份验证相比,您的 api 用户将进行一次身份验证,并且您的 api 将发出一个安全令牌,该令牌应在客户端发出的每个后续请求上发送。

在这种情况下,您的 DelegatingHandler 将检查此令牌,对其进行验证,并以 401 响应或相应地设置委托人。

请注意,我没有在这里介绍令牌颁发或验证背后的逻辑,因为它们通常是自定义的。你可以用谷歌搜索亚马逊是如何用它的 api 做的,但如果你的 api 背后的数据非常敏感,我只会使用这种复杂的机制。

于 2013-04-14T21:24:02.727 回答