使用多个REST后端时,angularjs中的身份验证和授权

时间:2015-07-21 07:06:10

标签: angularjs rest authentication jersey authorization

情境:

  • 多个REST后端,例如使用泽西岛开发,并单独部署,例如在码头容器中。
  • 单个且单独部署的AngularJS Web应用程序,消耗每个REST后端。

现在,我想要的是添加身份验证和授权,以便用户可以使用html格式登录。

现在,我唯一确定的是我不需要OAuth,因为没有第三方需要访问REST后端,只需要访问AngularJS应用程序。

我已经研究过Apache Shiro,Spring Security和其他框架,但是我并不知道如何在身份验证和授权方面整合前端和后端。

你们中间是否有任何一个如何做的例子而没有使用安全特定方面的代码混乱?

可能/合理的解决方案?

如果我只是为了身份验证和授权而实现和部署一个单独且非常精简的REST服务,那么请使用POST端点https://.../authenticate,它返回错误消息或带有用户详细信息的JSON响应,使用唯一的会话令牌,然后我可以在每个后续请求/响应中包含此令牌和其他必要的头。然后,每个REST后端可以过滤每个请求,并检查使用会话令牌和角色等的给定头信息是否经过身份验证和授权。

此解决方案是否有任何缺点/缺陷?

2 个答案:

答案 0 :(得分:0)

如果您只需要身份验证和授权而不是oAuth,那么请使用Angular进行“基本身份验证”。

实施示例如下所示: http://jasonwatmore.com/post/2014/05/26/AngularJS-Basic-HTTP-Authentication-Example.aspx

答案 1 :(得分:0)

如果您的所有后端都需要基本身份验证的相同身份验证凭据,那么您可以设置身份验证标头的默认标头值,以便它将用于您的所有http请求。

var authdata = btoa($scope.user.email + ':' + $scope.user.password);

$http.defaults.headers.common['Authorization'] = 'Basic ' + authdata; // set default Authorization header value.

//Call multiple backends now. The Authorization header will remain unless it is explicitly cleared.