如何集成基于angularjs和Java jaas的身份验证
how to integrate angularjs and java jaas based authentication?
我有一个webapp,前端是angularJS,后台是Java。Angular通过Restful webservices通过HTTP消费和发送JSON与java后端通信。我需要为这个应用程序构建身份验证机制,并且想知道如何是最好的方法,目前我正在使用基于JAAS的身份验证(JDBC用户表)。我的应用程序是这样配置的:
我的web.xml配置有:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>userauth</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/loginError.html</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<display-name>ConstraintSSL</display-name>
<web-resource-collection>
<web-resource-name>protected</web-resource-name>
<description/>
<url-pattern>/checkout/*</url-pattern>
<url-pattern>/login/*</url-pattern>
<url-pattern>/login.*</url-pattern>
<url-pattern>/account/*</url-pattern>
<url-pattern>/ad/create</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<display-name>ConstraintUser</display-name>
<web-resource-collection>
<web-resource-name>user</web-resource-name>
<description/>
<url-pattern>/account/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>ADMINISTRATORS</role-name>
<role-name>USERS</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role>
<description/>
<role-name>USERS</role-name>
</security-role>
<security-role>
<description/>
<role-name>ADMINISTRATORS</role-name>
</security-role>
<session-config>
<session-timeout>30</session-timeout>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
<welcome-file-list>
<welcome-file>init.html</welcome-file>
</welcome-file-list>
init.html只重定向到加载angular并启动实际应用的index.html页面。
现在这里是我的UserController处理用户相关的活动在客户端(浏览器):
myControllers.controller('UserController', ['$scope', '$routeParams', 'UserService',
function($scope, $routeParams, UserService) {
$scope.logged = false;
// if User is not detected by cookie
$scope.user = fetchUserFromCookie();
if (! $scope.user) {
// set default guest user
$scope.user = {
firstName : 'guest',
lastName : 'user',
preferredCurrency : "USD$",
sessionHash: "XXXXXX",
shoppingCart : {
totalItems : 0,
total : 0
}
};
}
$scope.login = function(userName, pass) {
$scope.user = UserService.login(userName, pass);
$scope.logged = true;
};
$scope.logout = function(userName) {
$scope.user = UserService.logout(userName); // warn server side you're logging out
$scope.logged = false;
$scope.user = null;
};
}]);
我的目标是提供一个基于JAAS的JDBC认证的登录页面,并且只允许那些具有特定ADMIN角色或user角色的用户看到某个页面,如何在一个基于angularJS + Java的应用程序中实现这一点?
我主要关注的是会话跟踪,
如何跟踪特定用户已授予访问权限并具有更改特定记录的权限?
如何防止手动攻击,如手动更改JS代码或更改Cookie以劫持用户会话?
- index.html页面应该在html中包含令牌以避免CSRF
- 令牌不应该存储在cookie存储
- 每个请求都应该用头参数 签名
- 服务器应该通过传递的报头验证每个请求
- 如果cookie的使用是必须的,你应该验证引用,以防止CSRF
相关文章:
- AngularJS:如何使用java脚本函数更改跨度的ng-show条件
- java substitute for angularJs watch
- AngularJS service with Java (REST)?
- 如何使用AngularJS将多个参数发送到JAVA API
- 将函数从java(Android)移植到AngularJs
- 如何使用Java Servlet将JSON对象返回到AngularJS
- 使用AngularJS时java web框架的必要性
- 为什么我的两个不同angularjs服务解析为同一个restful Java EE web服务
- 无法通过REST和AngularJS通过java web应用程序在youtube服务器上上传视频
- 在AngularJS中,您将如何缓存从Java收到的数据(例如,今天的前10条新闻的列表)
- 将对象从AngularJS传递给Java
- 带Java后端的angularjs
- 从Java android调用AngularJs控制器函数
- 如何在AngularJS控制器中访问Java类的JSON数组
- 如何从另一个java脚本框架中调用angularJS
- 用AngularJS和Java Servlet上传文件到服务器
- 如何集成基于angularjs和Java jaas的身份验证
- 在开发过程中将AngularJS认证到Java EE (grunt server " "JBoss&
- 如何使用angularJS或Java保存字符串(并在iframe中使用它)
- AngularJS填充Java Map中的ng选项.(排序问题)