浏览器和Webserver api身份验证令牌

时间:2015-01-17 08:33:07

标签: authentication model-view-controller oauth owin

我目前正在开发一个解决方案,其中包括一个多租户webApi,将由多个客户端访问,其中一些我将创建,其他一些将创建。 访问api将通过ApiKey& amp;秘密(足够的一些资源)以及用户名和&密码(对于所有者资源)。

目前,我创建的客户端(.Net MVC Web应用程序)拥有自己的会员系统,所以会发生的情况是客户端用户登录到客户端系统,客户端系统将登录信息传递给Api检索身份验证令牌。

客户端成员系统实际上是一种不必要的抽象。我真正想做的是让用户直接登录到api,api传回一个可以从浏览器和.Net MVC客户端应用程序使用的身份验证令牌。

我的问题是,实现这一目标的最佳途径是什么。在我看来,我似乎在努力解决两个问题。

1)具有基于浏览器的登录(例如ajax / AngularJS)解决方案,该解决方案调用api以检索令牌,然后该令牌将该令牌传递到将存储它的MVC客户端(可能是会话变量)。以后对来自.Net MVC客户端的api的任何调用都可以传递令牌。这对我来说似乎不对。我甚至不确定这是可能的。

2)利用其中一个OAuth流,以便基于浏览器的登录可以调用API并检索令牌,OAuth流重定向到MVC客户端,然后MVC客户端存储该用户的令牌(同样,在会话变量中) )。

使用Owin本地帐户使用VS2013 WebApi模板生成Api,并通过ValidateClientCredentials和ValidateResourceOwnerCredentials流生成令牌,但我认为我需要使用其他OAuth流程之一。

据我所知,另一种解决方案是绕过.Net MVC客户端代码并使用knockout或AngluarJS创建一个完全基于浏览器的解决方案,但它是一个相当复杂的系统,我真的没有时间这样做,所以我正在寻找一个解决方案,允许我从api中检索一个可以从我的.Net MVC客户端使用的令牌和来自浏览器的ajax调用。

任何想法,建议都会非常感激。

提前谢谢。贾斯汀

1 个答案:

答案 0 :(得分:0)

如果您依赖Azure AD作为凭据存储和身份验证系统,您将能够利用随时可用的JS库来自动处理身份验证,AJAX调用和会话管理问题:请参阅http://www.cloudidentity.com/blog/2014/10/28/adal-javascript-and-angularjs-deep-dive/ 。 如果您不能依赖Azure AD,那么上面提到的库代码和示例仍然可以作为构建您自己系统的参考 - 只要您决定使用的认证系统提供类似的功能。 HTH 诉