我正在创建一个web api数据服务。我想在asp.net网站上使用该服务以及设备应用程序(iOS,Windows Phone,Android)。
我应该使用哪种身份验证机制?我仔细阅读并发现带加密的Bearer令牌是一种好方法。
我无法理解网站如何将身份传播到网络API服务? (因为通常基于mvc的网站都内置了身份验证!)
我知道我可以如何将身份验证委托给基于OWIN的模块......我不确定所有这些技术都适合的整体情况。
任何人都可以用完整的图片向我解释一下,怎么做?
答案 0 :(得分:2)
身份传播很简单,设备应用程序使用登录页面自动化或提供自己的登录界面来获取令牌,然后在连续请求中使用令牌。
我的建议是围绕OAuth2流程构建您的身份验证。您可以找到有趣的四种流程中的三种。
授权代码流适用于被动客户端(其他Web应用程序)。您的身份验证服务器返回一次性代码,应用程序(资源服务器)使用该代码将其交换为承载令牌。
令牌流适用于可以访问身份验证服务器上的登录ui的活动客户端,例如javascript客户端。
资源所有者流允许移动应用程序为令牌交换用户名/密码,该令牌可以托管自定义登录ui。
http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified
在实践中,所有这些可能的流程为客户提供了很大的集成灵活性。由于协议的开放性,构建在任何技术堆栈中的客户端都可以使用您的身份验证服务。
如果你遵循这条路线并使用DotnetOpenAuth然后是,则令牌会携带有关用户会话的加密信息,因此不需要持久性令牌存储库。