Revision 36:d0e2afc0c6e6

View differences:

src/my/com/upass/UPassControllerV2.java
18 18
import my.com.upass.factory.UPassFactory;
19 19
import my.com.upass.services.ActivateUserService;
20 20
import my.com.upass.services.AssignTokenService;
21
import my.com.upass.services.ChangeStaticPasswordService;
22 21
import my.com.upass.services.CheckPasswordReusedService;
23 22
import my.com.upass.services.DeleteTokenService;
24 23
import my.com.upass.services.DisableTacService;
......
57 56
 */
58 57
public class UPassControllerV2 extends MinimalUPassControllerV2
59 58
{
60
	private ChangeStaticPasswordService changeStaticPasswordService = new ChangeStaticPasswordService(this);
61 59
	private CheckPasswordReusedService checkPasswordReusedService = new CheckPasswordReusedService(this);
62 60
	private GenerateTacService generateTacService = new GenerateTacService(this);
63 61
	private VerifyTacService verifyTacService = new VerifyTacService(this);
......
79 77

  
80 78
	private DeleteUserService DeleteUserService = new DeleteUserService();
81 79

  
82
	public UPassControllerV2()
83
	{
84
		initializeConfigurations();
85
	}
86

  
87 80
	// ////////////////////////////////////////////////////////////////////////////////////////
88 81
	// Static Password Methods
89 82
	// /////////////////////////////////////////////////////////////////////////////////////////
......
110 103
		return rc;
111 104
	}
112 105

  
113
	/**
114
	 * This method generate static password and to be using SP_VerifyStaticPassword()
115
	 * 
116
	 * @param userAlias
117
	 * @param newPassword
118
	 * @param oldPassword
119
	 * @return ERR_code defined in the Constants<br/>
120
	 *         ERR_SUCCESS<br/>
121
	 *         ERR_SYSTEM_NOT_READY<br/>
122
	 *         ERR_USERALIAS_NOT_FOUND<br/>
123
	 *         ERR_INVALID_STATE - user not active or temporary suspended.<br/>
124
	 *         ERR_APP_SERV_NOT_PERMITTED - for operation not allowed for the user type.<br/>
125
	 *         ERR_EXCEED_MAX_TRIES - used ModifyUser to reset password.<br/>
126
	 *         ERR_INVALID_CREDENTIAL<br/>
127
	 *         ERR_REUSED_PASSWD - reuse previous generated password.<br/>
128
	 */
129
	public int SP_ChangeStaticPassword(String userAlias, String newPassword, String oldPassword)
130
	{
131
		int rc = changeStaticPasswordService.changeStaticPassword(userAlias, newPassword, oldPassword, true);
132
		logger.info("SP_ChangeStaticPassword - user alias: [" + userAlias + "] Return: " + rc);
133
		return rc;
134
	}
135

  
136 106
	public int SP_ForceChangeStaticPassword(String userAlias, String newPassword, String oldPassword)
137 107
	{
138 108
		int rc = changeStaticPasswordService.changeStaticPassword(userAlias, newPassword, oldPassword, false);
src/my/com/upass/services/ChangeStaticPasswordService.java
1
/**
2
 * Copyright (c) 2010 Penril Datability (M) Sdn Bhd All rights reserved.
3
 *
4
 * This software is copyrighted. Under the copyright laws, this software
5
 * may not be copied, in whole or in part, without prior written consent
6
 * of Penril Datability (M) Sdn Bhd or its assignees. This software is
7
 * provided under the terms of a license between Penril Datability (M)
8
 * Sdn Bhd and the recipient, and its use is subject to the terms of that
9
 * license.
10
 */
11

  
12
package my.com.upass.services;
13

  
14
import my.com.upass.Constants;
15
import my.com.upass.UPassControllerV2;
16
import my.com.upass.dao.DAOFactoryProvider;
17
import my.com.upass.dao.UserDAO;
18
import my.com.upass.factory.UPassFactory;
19
import my.com.upass.pojo.MinimalUserBean;
20
import my.com.upass.spassword.PasswordController;
21

  
22
/**
23
 * PROGRAMMER: Danniell
24
 * CHANGE-NO:
25
 * TASK-NO:
26
 * DATE CREATED: Dec 28, 2011
27
 * TAG AS:
28
 * REASON(S):
29
 * MODIFICATION:
30
 */
31

  
32
/**
33
 * <Class description>
34
 */
35
public class ChangeStaticPasswordService
36
{
37
	private UPassControllerV2 upc;
38
	
39
	public ChangeStaticPasswordService(UPassControllerV2 upc)
40
	{
41
		this.upc = upc;
42
	}
43
	
44
	public int changeStaticPassword(String userAlias, String newPassword, String oldPassword, boolean checkChangeInterval) 
45
	{
46
		int rc = Constants.ERR_SYSTEM_NOT_READY;
47
		
48
		try
49
		{
50
			UserDAO userDao = DAOFactoryProvider.getDAOFactory ().getUserDAO ();
51
			MinimalUserBean userBean = userDao.getUserFromStore(userAlias, null);
52
			
53
			if (userBean == null) 
54
			{
55
				return Constants.ERR_USERALIAS_NOT_FOUND;
56
			}
57
			
58
			userBean.getPdateCreated();
59
			
60
			// verify user
61
			PasswordController pc = UPassFactory.getPasswordController(userBean, upc.getConfigurationsMap ());
62
			
63
			if (checkChangeInterval == true)
64
			{
65
				rc = pc.checkRegeneratePassword();
66
				if (rc == Constants.ERR_PASSWD_CHANGE_INTERVAL ) 
67
				{
68
					return Constants.ERR_PASSWD_CHANGE_INTERVAL;
69
				}
70
			}
71
			
72
			rc = pc.VerifyPassword(oldPassword);
73
			
74
			if (rc == Constants.ERR_SUCCESS || 
75
					rc == Constants.ERR_PASSWD_EXPIRED || 
76
					rc == Constants.ERR_PASSWD_EXPIRED_NOTIFICATION) 
77
			{
78
				rc = pc.GeneratePassword(newPassword, true);
79
			}
80
			
81
			userBean = (MinimalUserBean) pc.getUpdatedObject();
82
			
83
			// update database
84
			boolean lrc = userDao.updateUserToStore(userBean, null);
85
			
86
			if (!lrc) 
87
			{
88
				rc = Constants.ERR_SYSTEM_NOT_READY;
89
			}
90
		}
91
		catch(Exception e)
92
		{
93
			e.printStackTrace ();
94
		}
95
		
96
		return rc;
97
	}
98
}
src/my/com/upass/services/CheckPasswordReusedService.java
1
/**
2
 * Copyright (c) 2010 Penril Datability (M) Sdn Bhd All rights reserved.
3
 *
4
 * This software is copyrighted. Under the copyright laws, this software
5
 * may not be copied, in whole or in part, without prior written consent
6
 * of Penril Datability (M) Sdn Bhd or its assignees. This software is
7
 * provided under the terms of a license between Penril Datability (M)
8
 * Sdn Bhd and the recipient, and its use is subject to the terms of that
9
 * license.
10
 */
11

  
12
package my.com.upass.services;
13

  
14
import java.util.Date;
15
import java.util.StringTokenizer;
16

  
17
import my.com.upass.Constants;
18
import my.com.upass.UPassControllerV2;
19
import my.com.upass.dao.DAOFactoryProvider;
20
import my.com.upass.dao.UserDAO;
21
import my.com.upass.factory.UPassFactory;
22
import my.com.upass.pojo.MinimalUserBean;
23
import my.com.upass.spassword.PasswordController;
24

  
25
/**
26
 * PROGRAMMER: Danniell
27
 * CHANGE-NO:
28
 * TASK-NO:
29
 * DATE CREATED: Dec 29, 2011
30
 * TAG AS:
31
 * REASON(S):
32
 * MODIFICATION:
33
 */
34

  
35
/**
36
 * <Class description>
37
 */
38
public class CheckPasswordReusedService
39
{
40
	private UPassControllerV2 upc;
41
	
42
	public CheckPasswordReusedService(UPassControllerV2 upc)
43
	{
44
		this.upc = upc;
45
	}
46
	
47
	public int CheckPasswordReused (String userAlias, String password)
48
	{
49
		String token;
50

  
51
		if (userAlias == null || password == null)
52
		{
53
			return Constants.ERR_INVALID_INPUT;
54
		}
55

  
56
		try
57
		{
58
			UserDAO userDao = DAOFactoryProvider.getDAOFactory ().getUserDAO ();
59
			MinimalUserBean userBean = userDao.getUserFromStore (userAlias, null);
60

  
61
			if (userBean == null)
62
			{
63
				return Constants.ERR_USERALIAS_NOT_FOUND;
64
			}
65

  
66
			// verify user state, must be active (not inactive|locked|deleted)
67
			switch (userBean.getUstate ())
68
			{
69
				case (Constants.UID_STATE_ACTIVE):
70
					break;
71
				case (Constants.UID_STATE_TMP_LOCKED):
72
					Date now = new Date ();
73
					if (userBean.getUdateLockedTo ().after (now))
74
					{
75
						return Constants.ERR_INVALID_STATE;
76
					}
77
					break;
78
				default:
79
					return Constants.ERR_INVALID_STATE;
80
			}
81
			
82
			PasswordController pc = UPassFactory.getPasswordController (
83
					userBean, upc.getConfigurationsMap ());
84
			String cipherText = pc.SHA256 (userBean.getUserAlias(), password);
85
			
86
			if (userBean.getPhistoryList () != null)
87
			{
88
				StringTokenizer stz = new StringTokenizer (
89
						userBean.getPhistoryList (), ":");
90
				while (stz.hasMoreTokens ())
91
				{
92
					token = stz.nextToken ();
93
					if (cipherText.equals (token))
94
					{
95
						return Constants.ERR_REUSED_PASSWD;
96
					}
97
				}
98
			}
99
			return Constants.ERR_SUCCESS;
100
		}
101
		catch (Exception e)
102
		{
103
			e.printStackTrace ();
104
			return Constants.ERR_SYSTEM_NOT_READY;
105
		}
106
	}
107
}
src/my/com/upass/services/VerifyPasswordComplexityService.java
1
package my.com.upass.services;
2

  
3
import my.com.upass.ConfigBean;
4
import my.com.upass.Constants;
5
import my.com.upass.UPassControllerV2;
6
import my.com.upass.pojo.UserBean;
7
import my.com.upass.spassword.PasswordController;
8

  
9
public class VerifyPasswordComplexityService {
10
	private UPassControllerV2 upc;
11
	
12
	public VerifyPasswordComplexityService(UPassControllerV2 upc)
13
	{
14
		this.upc = upc;
15
	}
16
	
17
	public int verifyPasswordComplexity(String userPassword, int applicationId){
18
		int rc = Constants.ERR_SYSTEM_NOT_READY;
19
		try {
20
			UserBean ub = new UserBean();
21
			ub.setApplicationId(applicationId);
22
			
23
			PasswordController pc = new PasswordController(ub, upc.getConfigurationsMap());
24
			ConfigBean configBean = pc.getConfigBean ();
25

  
26
			if (pc.patternValidator(userPassword, configBean.getPasswordAcceptPattern()))
27
			{
28
				rc = Constants.ERR_SUCCESS;
29
			}
30
			else
31
			{
32
				rc = Constants.ERR_PASSWD_WEAK;
33
			}
34
			
35
		} catch (Exception e) {
36
			e.printStackTrace();
37
		}
38
		
39
		return rc;
40
	}
41
}

Also available in: Unified diff