在没有cookie的情况下验证页面请求

时间:2017-10-06 20:01:01

标签: http authentication cookies

这个问题是要验证我是否正确理解了某些内容。我目前正在设计一个基于Web的应用程序,它涉及多个页面(想想,同一个域下的不同SPA),我希望只有一个认证点。

我的问题是:在SPA上,可以在本地/会话存储上存储身份验证令牌,据我所知,验证页面请求的唯一方法(链接)无论我使用的身份验证方法是什么(基本,OAuth,JWT等),使用Cookie都可以访问另一个页面,而不是异步请求。

我说错了吗?这是唯一可用的方法吗?

2 个答案:

答案 0 :(得分:2)

这是一个广泛的问题,但我会说通常答案可能是“不”。你可以做很多事情。

当你提到“一个身份验证点”时,我假设你的意思是“单点登录”。有很多系统可以实现单点登录。

从广义上讲,这可能是有用的:

  1. 用户转到您的某个应用程序。
  2. 用户自动被重定向到认证页面(在中央域上)。
  3. 用户登录,登录信息存储在(例如)LocalStorage中。这允许存储此信息。
  4. 单点登录系统将用户重定向回原始应用程序,并在网址中嵌入一次性令牌。
  5. 原始应用程序使用令牌获取多用途令牌。
  6. 这是OAuth2中非常常见的流程。

答案 1 :(得分:0)

我知道几个选项:

  • cookies(不需要解释)
  • 基本HTTP身份验证

    将基本身份验证与HTTPS结合使用是安全的。 请求之间重复身份验证标头,因此输入一次凭据。 唯一的问题是难看的浏览器弹出窗口请求凭据

  • 通过javascript或服务器端HTML处理为每个链接添加令牌/签名

    E.g。使用jQuery,注意代码是简化的

    $(document.body).click('a', e => {
        var $a = $(e.target).closest('a');
        if($a.length) {
            e.preventDefault();
            document.location = $a.attr('href') + '&token=' + secretToken;
        }
    })
    

请找good article explaining available authentification methods here