Как создать пользователя с помощью microstrategy SDK в java (внешний модуль безопасности)

Моя цель — создать пользователя с помощью microstrategy SDK и назначить пользователю фильтры и группы.

  1. У меня есть класс Java CreateUser и SSOESM из SDK. Нужно ли мне создавать подключаемый модуль класса create user и развертывать его на сервере microstrategy Intelligence.

    public class CreateUser {
        public static WebIServerSession sessionInfo;
        public static final String loginName = "NewUser";
        public static final String password= "";
        public static final String fullName= "New User";
        public static final String description="New User Created Programattically";
    
        /*  The following information is required to login and manipulate the User management API */
        /* iServerName is the IServer we are connecting to */
        public static final String iServerName = "localhost";
        /* projectName is the project name we are connecting to */
        public static final String projectName = "";
        /* loginName is the user name we use to login the project */
        public static final String adminLoginName = "administrator";
        /* loginPasswd is the password we use to login the project */
        public static final String adminLoginPasswd = "";
    
        public static void main(String[] args) {
            sessionInfo = getServerSession(iServerName, projectName, adminLoginName, adminLoginPasswd);
    
            UserBean user = null;
            try {
                //Instantiate a new user
                user = (UserBean)BeanFactory.getInstance().newBean("UserBean");
                user.setSessionInfo(sessionInfo);
                user.InitAsNew();
    
                //Fetch properties for the user
                WebUser ua = (WebUser) user.getUserEntityObject();
                WebStandardLoginInfo loginInfo = ua.getStandardLoginInfo();
    
                //Set basic user information
                ua.setLoginName(loginName);
                ua.setFullName(fullName);
                user.getObjectInfo().setDescription(description);
                loginInfo.setPassword(password);
    
                //Set other properties
                Calendar cal = Calendar.getInstance();
                cal.set(2012, 11, 21);
                Date d = cal.getTime();
    
                loginInfo.setPasswordExpirationDate(d);  //Password expires on November 21, 2012
                loginInfo.setPasswordExpirationFrequency(90); //90 days to expire
                loginInfo.setPasswordExpiresAutomatically(true); //If set to false, password never expires
                loginInfo.setStandardAuthAllowed(true); //The user can log in using standard auth
    
                user.save();
            } catch (WebBeanException ex) {
                System.out.println("Error creating a user: " + ex.getMessage());
            }
        }
    
        public static WebIServerSession getServerSession(String serverName, String Project, String loginName, String password) {
            WebIServerSession sessionInfo = null;
            try {
                WebObjectsFactory woFact = WebObjectsFactory.getInstance();
                sessionInfo = woFact.getIServerSession();
    
                sessionInfo.setServerName(serverName);
                sessionInfo.setProjectName(Project);
                sessionInfo.setLogin(loginName);
                sessionInfo.setPassword(password);
                sessionInfo.setApplicationType(EnumDSSXMLApplicationType.DssXmlApplicationCustomApp);
                //Create a new session
                sessionInfo.getSessionID();
            } catch (WebObjectsException ex) {
                System.out.println("Error creating a sesion");
            }
    
            return sessionInfo;
        }
    }
    

Моя цель - когда пользователь пытается войти в систему, пользователь должен быть создан на лету с использованием классов sdk.


person Karuna    schedule 03.03.2016    source источник


Ответы (1)


Мне нужно создать подключаемый модуль и настроить его для использования созданного вами класса Java в качестве ESM.

https://lw.microstrategy.com/msdz/MSDZ_World2015/docs/projects/WebSDK/output/HTML5/Content/topics/esm/specifying_the_custom_esm_to_use.htm

При этом важно понимать, что действия, которые вы выполняете, очень дороги. Они могут ухудшить работу пользователя, если вы пытаетесь обеспечить быструю работу единого входа. В зависимости от вашей реализации может быть лучше создать пользовательскую задачу, которая может быть запущена, когда пользователь аутентифицируется в стороннем приложении. Эта задача может выполнять все описанные вами действия, а затем возвращать состояние сеанса. Который можно использовать при любых последующих подключениях к MicroStrategy Web.

person Karuna    schedule 04.03.2016