1

正在尝试在 mule 中进行身份验证和授权并使其正常工作。现在我想要对 mule 安全上下文的引用,特别是要在流中使用的主体对象引用。如何在流中获取对主要对象的引用?

链接到骡子xml

4

1 回答 1

2

安全上下文可通过 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;
  }

}
于 2015-11-27T08:39:37.450 回答