子域认证机制&会话维护

时间:2017-07-27 13:55:12

标签: session authentication jwt access-token session-state

SCENARIO

有3个域(其中2个是子域)

Site1

  • 独立网站

Site2

  • 完全取决于所有操作的api

API

  • 仅依赖site1进行身份验证

问题

Site1只有一个登录页面

用户登录到Site1并且必须能够以登录用户身份转到site2其中site2使用REST api服务器进行所有操作,包括身份验证(必须由site1提供)。

最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

会话与令牌替代:

  • 会话Cookie :站点1对用户进行身份验证,并创建使用唯一的sessionId cookie标识的服务器会话。它被丢弃,因为cookie不能轻易地跨域共享,它也意味着共享服务器会话

  • 身份验证令牌:站点1在成功进行用户身份验证后生成随机令牌,并重定向到站点2.站点2存储令牌并使用它来调用API。如果您正在构建SPA(单页应用程序)或服务器端(如果您的应用程序是基于表单的,则为每个用户使用会话),则可以将令牌存储在客户端。

关于令牌策略,您可以使用:

  • 不透明令牌:分配给用户并存储在站点1中的随机字符串。站点2和API应在收到令牌时查询站点1,以验证它是否处于活动状态并且谁对应

  • Json Web Tokens(JWT):令牌是自包含的,包括用户身份和一些利益声明,例如我们的到期时间或受众。令牌使用站点1的密钥进行签名,因此可以防止更改。站点2和API可以在不在线查询site1的情况下验证JWT,并且不需要服务器存储。在这种情况下,需要一个不对称的密钥对私有 - 公共(RSA)。令牌使用私钥签名并通过公共

  • 进行验证

总结:JWT简化了您的开发,减少了服务器到服务器的链接并减少了资源需求