正在尝试在 mule 中进行身份验证和授权并使其正常工作。现在我想要对 mule 安全上下文的引用,特别是要在流中使用的主体对象引用。如何在流中获取对主要对象的引用?
链接到骡子xml
正在尝试在 mule 中进行身份验证和授权并使其正常工作。现在我想要对 mule 安全上下文的引用,特别是要在流中使用的主体对象引用。如何在流中获取对主要对象的引用?
链接到骡子xml
安全上下文可通过 MuleSession 获得,此会话可通过 eventContext 获得。要获取 eventContext 参考,可以执行以下操作。
这可以通过实现 Callable 来实现。创建以下 java 类。现在在 mule 流中放置一个 java 组件,它必须被调用并使用创建的 java 类进行配置。Mule 会自动调用以 eventContext 作为参数的 onCall 方法,无需额外配置即可调用。
示例 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;
}
}