oauth令牌共享多个应用程序

You*_*suf 6 asp.net oauth-2.0 angularjs asp.net-web-api2

我的申请结构如下 -

https://democompany.com/
https://democompany.com/app1
https://democompany.com/api
Run Code Online (Sandbox Code Playgroud)

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

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

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

Dmi*_*kov 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');
Run Code Online (Sandbox Code Playgroud)

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

$http.defaults.headers.common['Authorization'] = "Bearer " + token;
Run Code Online (Sandbox Code Playgroud)

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

  • 有一个用于跨域本地存储的库,带有角度https://github.com/ofirdagan/cross-domain-local-storage (2认同)