我有两个webproject:MyApp和Api.MyApp . MyApp是MVC5应用程序,Api.MyApp是MVC WebAPI应用程序 .
MyApp是一个富客户端应用程序,可以在大多数操作中调用API项目 . 对于授权,我正在为web api使用Bearer令牌,但我也希望有一个cookie,这样我就可以在主MyApp MVC项目中保护某些路由 .
要获得持有者令牌,我称之为“http://api.myapp/token”我可以将此持有者令牌丢入cookie并让MVC项目识别它,或者我必须发送2个单独的呼叫,1到api获取持有者令牌,1到mvc应用程序来获取cookie . 这似乎有点多余,有更好的方法吗?
1 回答
是 .
假设您的应用程序正在响应以下内容:
api.example.com
www.example.com
用户访问www.example.com上的站点并提供其凭据 . 然后,您的应用程序向api.example.com发出AJAX调用以获取令牌 . 你现在有几个选择:
api.example.com返回令牌以及cookie,域名设置为
.example.com
api.example.com返回令牌,客户端脚本将其设置为cookie,域名设置为
.example.com
如果这样做,那么API和客户端应用程序都应该可以访问基于cookie的令牌 .
如果您不使用.Net auth令牌,则可能必须根据持票人cookie推出自己的授权机制 .
但是,如果您使用的是Intranet类型的域(即
http://myapp/
和http://api.myapp
),那么您只需在域中设置一个只有一个句点的cookie,否则我可以将其设置为".com"并在任何地方挥霍数据 . )