这是一个很大的主题,你可能需要花些时间来学习基础知识。
话虽如此,为了让后续方法调用得到认证,你需要有一个可以传递给每个请求的东西。如果你从网站中调用API,比如使用Angular或类似的技术,则一个简单的cookie(加密和MAC处理)就能满足需求。如何实现取决于你是否使用OWIN以及你的项目中是否还有MVC来提供页面服务。不要自己创建cookie,使用FormsAuthentication或等效的OWIN中间件即可。
你不需要使用Microsoft的Membership或Identity,但要知道自己处理密码不是一件简单的事情,你必须确切地知道自己在做什么-如果你想做这个事情,没有什么替代品可以代替研究。
如果你需要从除了网站之外的地方调用api,则cookie将不是一个好的选择。同时,请注意,在使用cookie和Web api时存在一些微妙的CSRF漏洞,你需要了解并保护自己免受这些漏洞的影响。
另一个替代cookie的选择是嵌入类似ThinkTecture Identityserver(它是免费的),并使用它来发出oAuth令牌,然后将这些令牌附加到每个API请求中。它有许多优点,但也更加复杂。
资源
你确实要求了关于开始阅读的指引。由于微软在过去几年里已经多次更改了默认方法,所以你的任务变得有些复杂。目前默认的方法是Identity,它取代了以前的MembershipProvider(好的拜拜)。如果你是新手,我建议你采用这种方法-你可以扩展它并且它与大部分的堆栈非常紧密地结合。是的,你会失去一些灵活性,而且你需要将其包装到你当前的用户存储中。但你需要问自己:出厂时获得的安全性是否值得那样做。
我还推荐Brock Allen的博客。内容非常硬核,但他精通技术并经常讲解很多微软身份验证技术的内部机制。
我建议你尝试阅读关于"OWIN身份验证中间件"的相关知识。这是未来的趋势,特别是在ASP.Net vNext方面。不幸的是,大多数文档都只关注如何使用(对于演示而言确实很容易),但缺乏关于它实际工作原理的深入信息,这可能会很令人沮丧。
为了更好地理解令牌和不同标准的工作方式,我建议您观看这个视频:http://www.ndcvideos.com/#/app/video/2651
然后看看Azure移动服务,它甚至还有处理身份验证的客户端库,或者ThinkTecture Identity Server。即使最终您没有使用IdSrv,通过学习其如何使用的教程,您将学到关于通用工作原理的很多知识;所有这些都基于开放标准。文档在这里:http://identityserver.github.io/Documentation/docs/。尝试通过他们的教程进行操作;他们使用Windows控制台应用程序代替应用,但概念是相同的。
祝你好运,但我想强调一点:请不要仅仅拼凑出似乎可以工作的东西。网络安全日益复杂,很容易在代码中留下漏洞-我谈论从经验中得出的教训 :) 。
不要成为Moonpig。