Authentication 浏览器和Web服务器api身份验证令牌

Authentication 浏览器和Web服务器api身份验证令牌,authentication,model-view-controller,oauth,owin,Authentication,Model View Controller,Oauth,Owin,我目前正在开发一个包括多租户webApi的解决方案,该解决方案将由多个客户端访问,其中一些客户端将由我创建,另一些客户端将由其他客户端创建。 可以通过ApiKey和Secret(对于某些资源足够)以及用户名和密码(对于所有者资源)访问api 目前,我创建的客户端(.Net MVC Web apps)有自己的成员系统,因此客户端用户登录到客户端系统,客户端系统将登录信息传递给Api以检索身份验证令牌 客户机成员系统实际上是一个不必要的抽象。我真正想做的是让用户直接登录到api中,api传回一个身份

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

目前,我创建的客户端(.Net MVC Web apps)有自己的成员系统,因此客户端用户登录到客户端系统,客户端系统将登录信息传递给Api以检索身份验证令牌

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

我的问题是,实现这一目标的最佳方式是什么。在我看来,我似乎在努力寻找两种解决方案

1) 有一个基于浏览器的登录(例如ajax/AngularJS)解决方案,该解决方案调用api来检索令牌,然后将该令牌传递到MVC客户端,并将其存储在那里(可能是会话变量)。将来任何来自.Net MVC客户端的api调用都可以在上传递令牌。但我觉得这是不对的。我甚至不确定这是否可能

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

该Api是使用Owin本地帐户使用VS2013 WebApi模板生成的,并且正在通过ValidateClientCredentials和ValidateResourceOwnerCredentials流生成令牌,但我认为我需要在该场景中使用其他OAuth流之一

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

如果您有任何想法和建议,我们将不胜感激


提前谢谢。Justin

如果您依赖Azure AD作为凭据存储和身份验证系统,您将能够利用一个随时可用的JS库,自动处理身份验证、AJAX调用和会话管理问题:请参阅。 如果你不能依赖Azure AD,上面提到的库代码和示例仍然可以作为构建你自己系统的参考——前提是你决定使用的AuthenticationOn系统提供类似的功能。 嗯 五,