【问题标题】:AngularJS SSO security?AngularJS SSO 安全性?
【发布时间】:2013-09-19 14:44:09
【问题描述】:

我们有一个 Angular 应用程序和另一个 Spring 应用程序。登录由 Spring 管理,当用户登录时,Spring 重定向到 Angular 应用程序。当 Spring 重定向时,它会在 header 中放置一个身份验证令牌。

如何使用 Angular 获取此令牌?

【问题讨论】:

    标签: security spring-mvc angularjs single-sign-on token


    【解决方案1】:

    由于 AngularJS 是 javascript,您可以在 HTML 的某个地方回显该标记。这是一次重定向到您的 angularApp。我这样做了

    <meta name="csrf-token" value="xxxx-xxx" />

    并且要从 Angular 将 http 调用发送回您的 Spring 应用程序,我相信您也必须在标头中发送该令牌(例如 X-Token),这可以像

    window.ngApp = angular.module('ngApp',[]);
    
    ngApp.config(["$httpProvider", function(provider) {     
          provider.defaults.headers.common['X-Token'] = $('meta[name=csrf-token]').attr('content');
    }]);
    

    因此,每次发出 http 请求时,X-Token 都会成为您请求的一部分。

    【讨论】:

    • 好的,但是这个令牌不是 csrf 令牌是身份验证令牌。并在 HTML 中回显这个令牌,就像回显用户密码......我不确定它是否真的安全。你看到了吗?
    • 我已经用 cookie 完成了 :) !服务器发送一个cookie,我在客户端得到它,它就像一个魅力!谢谢
    • 在我的情况下,CSRF 令牌需要作为交叉签名,API 调用也需要 API 密钥。但是Auth Token不是加密的吗?如果 javascript 可以读取 cookie,是不是几乎就像在 html 中回显一样?我的意思是人们会在检查器中看到 cookie,对吧?
    • 令牌当然是加密的。但是 auth 令牌和 csrf 令牌是不同的,将 csrf 令牌放在元标记中是一种很好的做法,但对于 auth 令牌来说,将它放在 cookie 中是正确的方法。但这只是我认为的“风格”规范。但我同意你的回答,因为它有效,没有它,我会花时间寻找解决方案。谢谢
    • 我知道它们是不同的 :) 并且你使用 Cookies 是对的。在我的应用程序中,我从前端处理 Auth。这是因为当您的服务器会话以某种方式被破坏时,您不想将用户重定向到您的 spring 页面,而是从 Angular 应用程序处理它,并且如果可能的话,不会破坏当前的 URL(通过模式左右)。无论如何,感谢您接受答案。编码快乐!
    猜你喜欢
    • 2023-03-31
    • 2016-03-22
    • 2017-09-22
    • 2019-10-07
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2016-03-15
    相关资源
    最近更新 更多