试着在骡子上进行认证和授权,并让它发挥作用。现在,我希望在流中使用对骡子安全上下文的引用,特别是主体对象引用。如何在流中获取对mule中主体对象的引用?
链接到mule xml
发布于 2015-11-27 08:39:37
安全上下文可以通过MuleSession获得,这个会话可以通过eventContext获得。要获得eventContext引用,可以执行以下操作。
这可以通过实现可调用来实现。创建以下java类。现在,将一个java组件放在mule流中,在其中必须调用它,并使用创建的java类进行配置。Mule调用自动的onCall方法,该方法以eventContext作为参数,不需要额外的配置来调用。
示例java组件从会话中获取安全内容,并从中获取安全主体,并将其存储在流变量"user“中,该变量可由流中该java组件后面出现的其他流元素使用。
import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;
import org.mule.api.security.Authentication;
import org.springframework.security.core.userdetails.UserDetails;
public class GetSecurityPrincipalCallable implements Callable {
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
Authentication auth = eventContext.getSession().getSecurityContext()
.getAuthentication();
UserDetails principal = (UserDetails) auth.getPrincipal();
System.out.println("username is : " + principal.getUsername());
eventContext.getMessage().setInvocationProperty("user", principal);
return null;
}
}https://stackoverflow.com/questions/33944485
复制相似问题