如何在多个网站上存储javascript小部件的身份验证?

如何在多个网站上存储javascript小部件的身份验证?,javascript,authentication,Javascript,Authentication,我已经编写了一个小部件应用程序,它与API进行通信,以创建和登录帐户。这需要嵌入到客户端页面中,以添加我们的功能 这很好,我可以将API的凭据存储在localstorage或Cookie中 我不确定如何让我们的最终用户通过多个网站登录 其想法是,他们将保持其已验证状态,以便我们的服务可以在他们遇到的任何地方继续工作。有人做过类似的事情吗?为什么cookiemonster不起作用? Cookie和LocalStorage不适用于跨域使用,因此使用您的小部件的插件或网站必须(在用户第一次进入时)登录

我已经编写了一个小部件应用程序,它与API进行通信,以创建和登录帐户。这需要嵌入到客户端页面中,以添加我们的功能

这很好,我可以将API的凭据存储在localstorage或Cookie中

我不确定如何让我们的最终用户通过多个网站登录


其想法是,他们将保持其已验证状态,以便我们的服务可以在他们遇到的任何地方继续工作。有人做过类似的事情吗?

为什么cookiemonster不起作用?

Cookie和LocalStorage不适用于跨域使用,因此使用您的小部件的插件或网站必须(在用户第一次进入时)登录。凭据不能(也不应该)跨域可见

如何跨域使用相同的Cookie/LocalStorage

用户将在某个时候被要求对您的web API进行身份验证,例如用户名和密码。您返回的令牌(凭据)可以在用户使用的所有站点上设置为相同的令牌

假设用户
x
进来并向您的API请求令牌。API返回令牌
token123
。用户
x
现在打开一个新窗口,再次请求使用相同用户名和密码的令牌。您的API现在将看到
x
已经有一个会话,并且将再次返回
token123

当用户
y
出现并请求使用不同用户名和密码的令牌时,API返回
token345
并将其存储在客户端

令牌将存储在LocalStorage中或作为Cookie存储,以便客户端可以检查用户是否已经拥有令牌,或者是否需要API中的新令牌

至于安全性


为了您的用户,我强烈建议您使用一种使用良好且定义明确的方法来验证用户并发送令牌。最好的方法是实现诸如Microsoft Azure Active Directory或Google登录之类的方法(有多种广泛使用的技术)。在您自己的服务器上存储令牌并不是您想要做的事情。至少用户没有密码。

谢谢,这非常有用。我想我要做的就是在这里向任何遇到这个问题的人概述。正确。如果我的回答令人满意,请将我的回答标记为已接受。如果你有任何其他问题,请随意提问。我已经用一些标题更新了答案,以便更好地解释我的观点。