Revision 36:d0e2afc0c6e6
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