ASP.NET身份和移动客户端

时间:2014-03-02 10:15:23

标签: asp.net authentication mobile asp.net-web-api asp.net-identity

最新版本的ASP.NET包括新的身份验证框架ASP.NET Identity,它应该是所有新的和不久的ASP.NET项目和网站中用户管理的核心构建块。

我已经看到它可以很好地与WebAPI集成,但还没有看到任何集成作为移动客户端设备的身份验证的示例。例如 - 假设我有一个使用Identity实现的ASP.NET网站。现在我想为Windows 8.1和Windows Phone 8构建客户端应用程序。我看到两个主要问题限制了这一点。

首先 - ASP.NET身份显然只发布短暂的身份验证。令牌,这对移动应用程序来说是一个非常糟糕的用户体验。我已经看到了一些创建刷新令牌机制的尝试 - http://leastprivilege.com/2013/11/15/adding-refresh-tokens-to-a-web-api-v2-authorization-server/。这是一个非常好的方法,但看到一个真正内置的解决方案仍然会更有趣。

第二 - 也许更重要 - 外部身份验证提供程序支持。在ASP.NET身份网站上,很容易看到通过WebAPI进行身份验证的方法,但我还没有看到这与外部身份验证一起使用。如何获得Facebook,Microsoft和Twitter的身份验证URL以及如何在应用程序内完成身份验证流程?

有没有人有这方面的经验?找到一个完整的演练会很棒,我很乐意用一些赏金点奖励正确的解决方案:-)。

1 个答案:

答案 0 :(得分:9)

问题是安全性很复杂,而且Microsoft的解决方案只针对简单的场景。

此外,你正在使用术语(这增加了每个人的困惑,包括你自己的混乱)。 ASP.NET Identity管理存储在数据库中的用户凭据。它与需要验证凭据的应用程序类型(移动设备,API,浏览器,桌面等)无关。

Katana中间件允许应用程序对呼叫者进行身份验证。有浏览器应用程序的cookie中间件,google,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