Spring Security是一个非常好的框架,广泛用于身份验证和授权。
我有一个要求,其中使用j_spring_security_check对应用程序进行身份验证,并且只有授权用户才能向websocket处理程序提出请求。
我已经按照http://malalanayake.wordpress.com/2014/06/27/spring-security-on-rest-
api/
配置了Spring安全性
而且我已经按照http://syntx.io/using-websockets-in-java-using-
spring-4/
配置了websocket 。
我希望按照以下方式从handleTextMessage处理程序访问 MyPrincipal 主对象:
@Override
protected void handleTextMessage(WebSocketSession session,
TextMessage message) throws Exception {
System.out.println("Protocol: "+session.getAcceptedProtocol());
TextMessage returnMessage = new TextMessage(message.getPayload()
+ " received at server");
System.out.println("myAttrib="
+ session.getAttributes().get("myAttrib"));
MyPrincipal user = (MyPrincipal) ((Authentication) session
.getPrincipal()).getPrincipal();
System.out.println("User: " + user.getUserId());
session.sendMessage(returnMessage);
}
请尽快重播。
HttpSessionHandshakeInterceptor
在websocket配置中添加允许将Spring
Security主体对象从传递SpringSecurityContext
到WebsocketSession
编辑: HandshakeInterceptor.java
public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor{
@Override
public boolean beforeHandshake(ServerHttpRequest request,
ServerHttpResponse response, WebSocketHandler wsHandler,
Map<String, Object> attributes) throws Exception {
System.out.println("Before Handshake");
return super.beforeHandshake(request, response, wsHandler, attributes);
}
@Override
public void afterHandshake(ServerHttpRequest request,
ServerHttpResponse response, WebSocketHandler wsHandler,
Exception ex) {
System.out.println("After Handshake");
super.afterHandshake(request, response, wsHandler, ex);
}
}
websocket.xml
<bean id="websocket" class="co.syntx.example.websocket.handler.WebsocketEndPoint"/>
<websocket:handlers>
<websocket:mapping path="/websocket" handler="websocket"/>
<websocket:handshake-interceptors>
<bean class="co.syntx.example.websocket.HandshakeInterceptor"/>
</websocket:handshake-interceptors>
</websocket:handlers>
我正在开发一个spring rest项目,并使用OAuth2.0来保护这些API免受未经授权的访问。 前端:Angular.js后端:Spring Rest+Spring Security+Oauth2 2)我从后端获得了一个令牌,并使用该令牌来访问API。 现在我的问题是,一旦我用/oauth/token点击后端?grant_type=password&client_id=angularapp&
有没有办法只使用spring security实现CSRF保护,而不使用身份验证和授权等其他功能? 我尝试了以下配置,但它关闭了spring security的所有功能。想知道是否有一种方法可以配置csrf功能。
我正在尝试为我的Spring应用程序实现一个REST API。因为有些资源可能不是每个人都可以访问的,所以我需要一个安全层。 我不知道该如何进行。使用Spring Security保护REST API的最佳方法是什么?
问题内容: 我知道保护REST API是一个被广泛评论的话题,但是我无法创建一个符合我的标准的小型原型(并且我需要确认这些标准是现实的)。如何保护资源以及如何使用Spring安全性有很多选择,我需要弄清楚我的需求是否现实。 我的要求 基于令牌的身份验证器-用户将提供其凭据,并获得唯一且受时间限制的访问令牌。我想在自己的实现中管理令牌的创建,检查有效性和到期时间。 某些REST资源将是公开的-完全不
null 当前状态 请给我一些如何开始的点子。
我正在开发一个模块,它使用来自Kafka主题的消息并发布到下游系统。在下游系统不可用的情况下,消费者不确认Kakfa消息。因此,当我的消费者收到消息时,当下游系统不可用时,kakfa的偏移量将不会被提交。但是如果我在下游系统启动后收到新消息,并且当我确认该消息时,最新的偏移量将被提交,并且消费者永远不会收到主题中没有偏移量提交的那些消息。