AngularJS访问令牌安全问题

AngularJS访问令牌安全问题,angularjs,oauth,thinktecture-ident-server,Angularjs,Oauth,Thinktecture Ident Server,从授权服务器检索访问令牌后,将其存储在AngularJS中的最佳实践是什么?我看到了很多关于使用localStorage服务的建议,但后来我读到了其他帖子/博客,它们说永远不要使用localStorage来存储令牌,它不安全等等 我很难用Angular软件来处理安全问题,因为上面的信息很复杂。我想 生成令牌(服务器端的敏感信息) 使用只有服务器知道的机器密钥对生成的令牌进行签名和加密。并获取加密令牌 然后将在步骤2中获得的加密令牌保存在cookies中 饼干过期时间应该非常少。使httponly

从授权服务器检索访问令牌后,将其存储在AngularJS中的最佳实践是什么?我看到了很多关于使用localStorage服务的建议,但后来我读到了其他帖子/博客,它们说永远不要使用localStorage来存储令牌,它不安全等等

我很难用Angular软件来处理安全问题,因为上面的信息很复杂。

我想

  • 生成令牌(服务器端的敏感信息)
  • 使用只有服务器知道的机器密钥对生成的令牌进行签名和加密。并获取加密令牌
  • 然后将在步骤2中获得的加密令牌保存在cookies中
  • 饼干过期时间应该非常少。使httponly成为cookie
  • 验证cookie时

  • 验证cookie
  • 使用机器密钥解密,并验证它仅由我们的服务器发送,并且具有相同的crc
  • 如果上述步骤2正确,则验证获得的令牌
  • Angularjs会在每个$http请求中自动添加头

    AngularAppFactory.GetApp=function(appName){
        var app = angular.module(appName,  []);
    
        app.factory('httpRequestInterceptor', ['$rootScope', function($rootScope)
        {
            return {
                request: function($config) {
                 if( $rootScope.user.authToken )
                 {
                  $config.headers['id'] = $rootScope.user.id;
                   $config.headers['auth-token'] = $rootScope.user.authToken;
                 }
    
                 return $config;
            }
        };
        }]);
    
        app.config(function ($httpProvider) {
          $httpProvider.interceptors.push('httpRequestInterceptor');
        });
    
        return app;
    }
    
    
    
    //Whenever you need to get new angular app, you can call this function.
    app = AngularAppFactory.GetApp('appName');
    

    我正试图做到这一点。我缺少一些实现细节。我有一个asp.net mvc应用程序,它只处理登录逻辑,设置身份验证cookie,然后重定向到angular应用程序。登录逻辑涉及在不同服务器上的web api上调用令牌端点。当我拿回来的时候,我会把那个代币储存在饼干里。但是,我如何将该令牌从angular发送回webapi,而不手动将其放入授权标头中?您有哪些链接表明本地存储不是一个好主意?我手头没有这些令牌,但会再次将其挖掘出来。我对您和Dominick的工作很熟悉,很想听听您对将其存储在本地存储中的意见。这是您推荐的吗?我认为本地存储很好,只要您知道它是如何工作的。从某种意义上说,它与您用于网站登录的持久cookie没有什么不同。