最新版本的ASP.NET包含新的身份验证框架ASP.NET Identity,它应该是所有新的和不久的将来的ASP.NET项目和网站中用户管理的核心构建块。
我已经看到它可以很好地与WebAPI集成,但还没有看到任何将集成作为移动客户端设备身份验证的例子。例如,假设我有一个正在使用中实现Identity的ASP.NET网站。现在我想为Windows 8.1和Windows Phone 8构建客户端应用程序。我认为有两个主要问题限制了这一点。
首先,ASP.NET Identity显然只发布短暂的身份验证。令牌,这对于移动应用程序来说是相当糟糕的用户体验。我看到了一些创建刷新令牌机制的尝试-http://leastprivilege.com/2013/11/15/adding-refresh-tokens-to-a-web-api-v2-authorization-server/。这是一个非常好的方法,但看到一个真正的内置解决方案仍然会更有趣。
第二,也许更重要的是,外部身份验证提供程序支持。在ASP.NET Identity网站上,可以很清楚地看到通过WebAPI进行身份验证的方法,但我还没有看到它与外部身份验证一起使用。如何获取Facebook、Microsoft和Twitter的身份验证URL,以及如何在应用程序内完成身份验证流程?
有人对此有经验吗?如果能找到一个完整的演练,我会很乐意为正确的解决方案奖励一些奖励积分:-)。
问题是安全性很复杂,而微软的解决方案只能解决简单的场景。
此外,你正在考虑术语(这会增加每个人的困惑,包括你自己的困惑)。ASP.NET Identity管理存储在数据库中的用户凭据。它与需要验证凭据的应用程序类型(移动、api、浏览器、桌面等)无关。
Katana中间件允许应用程序对调用者进行身份验证。浏览器应用程序有cookie中间件,谷歌、facebook、WS-Fed等的外部中间件,还有API应用程序的OAuth2。根据应用程序的性质,每种工作方式都有所不同。根据应用程序的要求,它们中的一些也会进行交互。
我并不是要指责你——这更多的是对微软在其提供的框架中缺乏教育/文档的抱怨。我想这就是你的问题的答案——微软没有你想要的。它们有一些零碎的东西,但你要把它们连接起来。
一些可能有帮助的链接:
http://www.asp.net/identity
http://www.asp.net/web-api/overview/security
http://www.asp.net/vnext/overview/authentication
http://brockallen.com/category/owin-katana/
http://leastprivilege.com/category/katana/
http://leastprivilege.com/category/webapi/
HTH-