oauth 令牌共享多个应用程序

oauth token sharing multiple applications

我的应用程序结构如下 -

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

用户在主要网站 url https://democompany.com/logon.aspx 上登录,这是一个 asp.net 网络表单应用程序。

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

是否有推荐的方法将 oauth 令牌从一个应用程序传递到另一个应用程序。

只要您的应用程序使用一个子域,您就可以使用客户端 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 设置令牌。

我相信你所描述的是 Cookie 的定义。