oauth令牌共享多个应用程序

时间:2015-11-12 01:41:26

标签: asp.net angularjs oauth-2.0 asp.net-web-api2

我的申请结构如下 -

https://democompany.com/
https://democompany.com/app1
https://democompany.com/api

用户登录主网站网址https://democompany.com/logon.aspx,这是一个asp.net webforms应用程序。

app1应用程序是一个使用/ api app的angularjs应用程序。 api是webapi2应用程序,它使用oauth令牌进行身份验证。我希望用户只能在democompany.com/logon.aspx上登录一次,并将oauth令牌传递给angularjs应用程序。

是否建议将oauth令牌从一个应用程序传递到另一个应用程序。

1 个答案:

答案 0 :(得分:4)

只要您的应用程序使用一个子域,就可以使用客户端window.localStorage来实现此目的。

// to set token in storage    
window.localStorage.setItem('access_token', access_token);
// to get token from storage
access_token = window.localStorage.getItem('access_token');

因此,您可以使用一些javascript代码从每个页面访问该存储。例如,使用angular + web.api的组合,您可以在$ http服务中为所有请求设置令牌:

$http.defaults.headers.common['Authorization'] = "Bearer " + token;

如果您希望更好地控制代码,也可以使用interceptor来设置令牌。