Package nl.amis.security.opss

Source Code of nl.amis.security.opss.OpssBean

package nl.amis.security.opss;

import java.util.Date;
import java.util.Iterator;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import oracle.adf.share.ADFContext;
import oracle.adf.share.security.SecurityContext;

import oracle.security.idm.IMException;
import oracle.security.idm.IdentityStore;
import oracle.security.idm.ModProperty;
import oracle.security.idm.Property;
import oracle.security.idm.PropertySet;
import oracle.security.idm.Role;
import oracle.security.idm.RoleProfile;
import oracle.security.idm.SearchParameters;
import oracle.security.idm.SearchResponse;
import oracle.security.idm.SimpleSearchFilter;
import oracle.security.idm.User;
import oracle.security.idm.UserProfile;
import oracle.security.jps.JpsContext;
import oracle.security.jps.JpsContextFactory;
import oracle.security.jps.JpsException;
import oracle.security.jps.service.credstore.CredentialStore;
import oracle.security.jps.service.credstore.PasswordCredential;
import oracle.security.jps.service.idstore.IdentityStoreService;

public class OpssBean {

    private JpsContext jpsCtx = null;
    private IdentityStore idStore = null;
    private UserProfile userProfile = null;

    private String oldPassword = null;
    private String newPassword = null;
   
    private String username = "";
    private String roles = "";
    private String attributes = "";

    private String key = null;
    private String map = null;

    private String keyUsername = null;
    private String keyPassword = null;

    private String createRole = null;

    private String createUser = null;
    private String createUserPassword = null;
    private String createUserRole = null;

    private String searchUser = null;
    private String searchUserResult = "";

    private static final String ldapAccountExpiresAttribute = "ACCOUNTEXPIRES";
    private static final String ldapLastLogonAttribute = "LASTLOGONTIMESTAMP";
    private static final String ldapPwdLastSetAttribute = "PWDLASTSET";

    public OpssBean() {

        ADFContext adfCtx = ADFContext.getCurrent();
        SecurityContext secCntx = adfCtx.getSecurityContext();

        this.username = secCntx.getUserName();

        for (String role : secCntx.getUserRoles()) {
            this.roles = this.roles + role + ", ";
        }

        try {
            jpsCtx = JpsContextFactory.getContextFactory().getContext();
            IdentityStoreService service =
                  jpsCtx.getServiceInstance(IdentityStoreService.class);
           
            idStore = service.getIdmStore();

            User user = idStore.searchUser(secCntx.getUserName());
            if (user != null) {
                userProfile = user.getUserProfile();
                PropertySet propSet = userProfile.getAllUserProperties();

                Iterator it = propSet.getAll();
                while (it.hasNext()) {
                    Property prop = (Property)it.next();
                    this.attributes =
                            this.attributes + "property: " + prop.getName();
                    Iterator it2 = prop.getValues().iterator();
                    while (it2.hasNext()) {
                        Object val = it2.next();
                        if ( prop.getName().equalsIgnoreCase(ldapAccountExpiresAttribute) ||
                             prop.getName().equalsIgnoreCase(ldapLastLogonAttribute) ||
                             prop.getName().equalsIgnoreCase(ldapPwdLastSetAttribute) ){
                       
                            long adTime = Long.parseLong(val.toString());
                            long javaTime = adTime - 0x19db1ded53e8000L;
                            javaTime /= 10000L;
                            Date day = new Date(javaTime);
                                         
                            this.attributes = this.attributes + " values: " + day.toString() + "\n";
                       } else {
                              this.attributes = this.attributes + " values: " + val.toString() + "\n";
                      
                    }
                }
            }
        } catch (JpsException e) {
            e.printStackTrace();
        } catch (IMException e) {
            e.printStackTrace();
        }
    }

    public void changePassword(ActionEvent actionEvent) {
        // Add event code here...
        if ( oldPassword == null || oldPassword.equals("") ) {
             FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                                      "Old password is empty", "");
             FacesContext.getCurrentInstance().addMessage(null, msg);
             return;
           }
       
              if ( newPassword == null || newPassword.equals("") ) {
                  FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                                      "New password is empty", "");
                  FacesContext.getCurrentInstance().addMessage(null, msg);
                  return;
              }
       
              if ( userProfile != null ) {
       
                  try {
                      char[] adEncodedPassword = oldPassword.toCharArray();
                      char[] adEncodedPassword2 = newPassword.toCharArray();
                    
                      userProfile.setPassword(adEncodedPassword, adEncodedPassword2);
                      FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
                                                          "Password has been changed", "");
                      FacesContext.getCurrentInstance().addMessage(null, msg)
                  } catch (IMException e) {
                      e.printStackTrace();
                      FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                                          e.getMessage(), "");
                      FacesContext.getCurrentInstance().addMessage(null, msg)
                  }
              } else {
                  System.out.println("user is null");
              }

    }


//  -Djps.auth.debug=true -Djps.auth.debug.verbose=true
//
//  start wlst.cmd from oracle_common\common\bin
//
//  connect('weblogic','weblogic1','t3://localhost:7101')
//  createCred(map="JPS",key="AD_ldap",user="CN=Administrator,CN=Users,DC=alfa,DC=local",password="Welcome02" ,desc="Windows LDAP user")
//  exit()

    public void retrievePassword(ActionEvent actionEvent) {
      try {
          CredentialStore store = jpsCtx.getServiceInstance(CredentialStore.class);
          PasswordCredential password =
              (PasswordCredential)store.getCredential(this.getMap(),
                                                      this.getKey());
          this.keyUsername = password.getName();
          this.keyPassword = new String(password.getPassword());

        FacesMessage fm = new FacesMessage("Succes");
        fm.setSeverity(FacesMessage.SEVERITY_INFO);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, fm);


      } catch (JpsException e) {
        e.printStackTrace();
        FacesMessage fm = new FacesMessage(e.getMessage());
        fm.setSeverity(FacesMessage.SEVERITY_ERROR);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, fm);
      }
    }

    public void createRole(ActionEvent actionEvent) {
        try {
          idStore.getRoleManager().createRole(this.createRole);

          FacesMessage fm = new FacesMessage("Succes");
          fm.setSeverity(FacesMessage.SEVERITY_INFO);
          FacesContext context = FacesContext.getCurrentInstance();
          context.addMessage(null, fm);


        } catch (IMException e) {
          e.printStackTrace();
          FacesMessage fm = new FacesMessage(e.getMessage());
          fm.setSeverity(FacesMessage.SEVERITY_ERROR);
          FacesContext context = FacesContext.getCurrentInstance();
          context.addMessage(null, fm);
        }

    }

    public void createUser(ActionEvent actionEvent) {
      try {
          PropertySet propSet = new PropertySet();

          Property prop = new Property("samaccountname",this.createUser);
  //        Property prop2 = new Property("userAccountControl",66048);
          propSet.put(prop);
  //        propSet.put(prop2);
          
          User newUser = idStore.getUserManager()
                .createUser(this.createUser,
                            this.createUserPassword.toCharArray(),
                            propSet);
          if ( createUserRole != null  ) {
              SimpleSearchFilter filter =
                        idStore.getSimpleSearchFilter(RoleProfile.NAME,
                                                      SimpleSearchFilter.TYPE_EQUAL,
                                                      this.createUserRole);
              SearchParameters sp = new SearchParameters(filter,
                                                         SearchParameters.SEARCH_ROLES_ONLY);
              SearchResponse response = idStore.search(sp);
              if (response.hasNext()) {
                Role role = (Role)response.next();
                idStore.getRoleManager().grantRole(role, newUser.getPrincipal());
              }
          }
          ModProperty userAccountControl =
              new ModProperty("userAccountControl",
                              "66048",
                              ModProperty.REPLACE );
         
          newUser.getUserProfile().setProperty(userAccountControl);
         
          FacesMessage fm = new FacesMessage("Success");
          fm.setSeverity(FacesMessage.SEVERITY_INFO);
          FacesContext context = FacesContext.getCurrentInstance();
          context.addMessage(null, fm);

      } catch (IMException e) {
          e.printStackTrace();
          FacesMessage fm = new FacesMessage(e.getMessage());
          fm.setSeverity(FacesMessage.SEVERITY_ERROR);
          FacesContext context = FacesContext.getCurrentInstance();
          context.addMessage(null, fm);
      }

    }

    public void searchUser(ActionEvent actionEvent) {
     SimpleSearchFilter filter =
           idStore.getSimpleSearchFilter(UserProfile.NAME,
                                         SimpleSearchFilter.TYPE_EQUAL,
                                         this.searchUser);
          SearchParameters sp = new SearchParameters(filter,
                                                     SearchParameters.SEARCH_USERS_ONLY);
          try {
            SearchResponse response = idStore.search(sp);
            if (response.hasNext()) {
              User user = (User)response.next();
              if (user != null) {
                UserProfile userProfile = user.getUserProfile();
                this.searchUserResult = userProfile.toString();
              }
            } 
          } catch (IMException e) {
                e.printStackTrace();
                FacesMessage fm = new FacesMessage(e.getMessage());
                fm.setSeverity(FacesMessage.SEVERITY_ERROR);
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, fm);
         }
    }


    public void setUsername(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    public void setRoles(String roles) {
        this.roles = roles;
    }

    public String getRoles() {
        return roles;
    }

    public void setAttributes(String attributes) {
        this.attributes = attributes;
    }

    public String getAttributes() {
        return attributes;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getKey() {
        return key;
    }

    public void setMap(String map) {
        this.map = map;
    }

    public String getMap() {
        return map;
    }


    public void setKeyUsername(String keyUsername) {
        this.keyUsername = keyUsername;
    }

    public String getKeyUsername() {
        return keyUsername;
    }

    public void setKeyPassword(String keyPassword) {
        this.keyPassword = keyPassword;
    }

    public String getKeyPassword() {
        return keyPassword;
    }

    public void setCreateRole(String createRole) {
        this.createRole = createRole;
    }

    public String getCreateRole() {
        return createRole;
    }

    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    public String getCreateUser() {
        return createUser;
    }

    public void setCreateUserPassword(String createUserPassword) {
        this.createUserPassword = createUserPassword;
    }

    public String getCreateUserPassword() {
        return createUserPassword;
    }

    public void setCreateUserRole(String createUserRole) {
        this.createUserRole = createUserRole;
    }

    public String getCreateUserRole() {
        return createUserRole;
    }

    public void setSearchUser(String searchUser) {
        this.searchUser = searchUser;
    }

    public String getSearchUser() {
        return searchUser;
    }

    public void setSearchUserResult(String searchUserResult) {
        this.searchUserResult = searchUserResult;
    }

    public String getSearchUserResult() {
        return searchUserResult;
    }


    public void setOldPassword(String oldPassword) {
        this.oldPassword = oldPassword;
    }

    public String getOldPassword() {
        return oldPassword;
    }

    public void setNewPassword(String newPassword) {
        this.newPassword = newPassword;
    }

    public String getNewPassword() {
        return newPassword;
    }

}
TOP

Related Classes of nl.amis.security.opss.OpssBean

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.