如何在 mule 流中获取 mule 安全上下文或安全主体引用

How to get mule security context or security principal reference in mule flow

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

link 至 mule xml

安全上下文可通过 MuleSession 获得,此会话可通过 eventContext 获得。要获取 eventContext 引用,可以执行以下操作。

这可以通过实现 Callable 来实现。创建以下 java class。现在将一个 java 组件放在必须调用它的 mule 流中,并使用创建的 java class 进行配置。 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;
  }

}