用于Web API表单身份验证的消息处理程序的任何示例?

时间:2013-04-14 18:14:33

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

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

WebAPI + Forms Authentication + SimpleMembershipProvider using WindowsIdentity when it shouldn't

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

1 个答案:

答案 0 :(得分:1)

答案是“这取决于您计划在网络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),而Message Handler(即DelegatingHandler)将获取这些凭据,使用您的简单成员资格提供程序验证它们,如果如果可以,则无效或设置主体。

更复杂的机制?

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

在这种情况下,您的DelegatingHandler将检查此令牌,验证它,并以401响应或相应地设置Principal。

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