From 61673b4b070c4f5cfcc0ab9b7231908770903ea5 Mon Sep 17 00:00:00 2001 From: MaxKey Date: Sat, 26 Feb 2022 19:40:57 +0800 Subject: [PATCH] optimize --- .../rememberme/InMemoryRemeberMeService.java | 2 +- .../java/org/maxkey/util/HttpsTrusts.java | 3 +- .../java/org/maxkey/util/Preconditions.java | 5 +- .../java/org/maxkey/util/InstanceTest.java | 7 +- .../org/maxkey/constants/ConstsStatus.java | 6 + .../constants/ldap/ActiveDirectoryUser.java | 13 +- .../main/java/org/maxkey/entity/UserInfo.java | 63 +++++---- .../maxkey-client-sdk-2.0.0.RELEASE.jar | Bin 99193 -> 0 bytes .../adapter/ExtendApiCndnsApiMailAdapter.java | 21 ++- .../adapter/ExtendApiQQExmailAdapter.java | 122 +++++++++++++++--- .../ActiveDirectoryUsersService.java | 61 ++++----- 11 files changed, 201 insertions(+), 102 deletions(-) delete mode 100644 maxkey-lib/maxkey-client-sdk-2.0.0.RELEASE.jar diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/support/rememberme/InMemoryRemeberMeService.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/support/rememberme/InMemoryRemeberMeService.java index fb472ad16..7e66a7e48 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/support/rememberme/InMemoryRemeberMeService.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/support/rememberme/InMemoryRemeberMeService.java @@ -28,7 +28,7 @@ public class InMemoryRemeberMeService extends AbstractRemeberMeService { protected static final Cache remeberMeStore = Caffeine.newBuilder() - .expireAfterWrite(ConstsTimeInterval.TWO_WEEK, TimeUnit.MINUTES) + .expireAfterWrite(ConstsTimeInterval.TWO_WEEK, TimeUnit.SECONDS) .build(); @Override diff --git a/maxkey-common/src/main/java/org/maxkey/util/HttpsTrusts.java b/maxkey-common/src/main/java/org/maxkey/util/HttpsTrusts.java index c6601baf4..a94cd5e73 100644 --- a/maxkey-common/src/main/java/org/maxkey/util/HttpsTrusts.java +++ b/maxkey-common/src/main/java/org/maxkey/util/HttpsTrusts.java @@ -31,7 +31,8 @@ public class HttpsTrusts { sc.init(null, trustAllCerts, null); javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } - /* + + /** * https ssl auto trust */ public static void beforeConnection() { diff --git a/maxkey-common/src/main/java/org/maxkey/util/Preconditions.java b/maxkey-common/src/main/java/org/maxkey/util/Preconditions.java index fc898ac4b..5e88f65e5 100644 --- a/maxkey-common/src/main/java/org/maxkey/util/Preconditions.java +++ b/maxkey-common/src/main/java/org/maxkey/util/Preconditions.java @@ -20,7 +20,6 @@ package org.maxkey.util; import java.util.Locale; import java.util.regex.Pattern; -import org.maxkey.client.oauth.model.OAuthConstants; /** * Utils for checking preconditions and invariants @@ -31,6 +30,8 @@ public abstract class Preconditions { // scheme = alpha *( alpha | digit | "+" | "-" | "." ) private static final String URL_REGEXP = "^[a-zA-Z][a-zA-Z0-9+.-]*://\\S+"; + + private static final String OUT_OF_BAND = "oob"; /** * Checks that an object is not null. @@ -75,7 +76,7 @@ public abstract class Preconditions { */ public static void checkValidOAuthCallback(String url, String errorMsg) { checkEmptyString(url, errorMsg); - if (url.toLowerCase(Locale.getDefault()).compareToIgnoreCase(OAuthConstants.OUT_OF_BAND) != 0) { + if (url.toLowerCase(Locale.getDefault()).compareToIgnoreCase(OUT_OF_BAND) != 0) { check(isUrl(url), errorMsg); } } diff --git a/maxkey-common/src/test/java/org/maxkey/util/InstanceTest.java b/maxkey-common/src/test/java/org/maxkey/util/InstanceTest.java index 32190bcfb..4ed6a3b23 100644 --- a/maxkey-common/src/test/java/org/maxkey/util/InstanceTest.java +++ b/maxkey-common/src/test/java/org/maxkey/util/InstanceTest.java @@ -20,7 +20,8 @@ package org.maxkey.util; import java.security.Provider; import java.security.Security; -import org.maxkey.client.crypto.ReciprocalUtils; +import org.maxkey.crypto.password.PasswordReciprocal; + public class InstanceTest { @@ -28,9 +29,9 @@ public class InstanceTest { if(System.getProperty("java.version").startsWith("1.8")) { System.out.println("1.8"); Security.addProvider((Provider)Instance.newInstance("com.sun.crypto.provider.SunJCE")); - System.out.println(ReciprocalUtils.encode("ddddd")); + System.out.println(PasswordReciprocal.getInstance().encode("ddddd")); - System.out.println(ReciprocalUtils.encode("ddfs")); + System.out.println(PasswordReciprocal.getInstance().encode("ddfs")); }else { System.out.println("other"); } diff --git a/maxkey-core/src/main/java/org/maxkey/constants/ConstsStatus.java b/maxkey-core/src/main/java/org/maxkey/constants/ConstsStatus.java index 610cb4c63..ceddc9b42 100644 --- a/maxkey-core/src/main/java/org/maxkey/constants/ConstsStatus.java +++ b/maxkey-core/src/main/java/org/maxkey/constants/ConstsStatus.java @@ -48,5 +48,11 @@ public final class ConstsStatus { public static final int APPROVED = 14; public static final int QUITED = 15; + + public static final String NONE = "NONE"; + + public static final String YES = "YES"; + + public static final String NO = "NO"; } diff --git a/maxkey-core/src/main/java/org/maxkey/constants/ldap/ActiveDirectoryUser.java b/maxkey-core/src/main/java/org/maxkey/constants/ldap/ActiveDirectoryUser.java index 52dab79b0..8ac46cd17 100644 --- a/maxkey-core/src/main/java/org/maxkey/constants/ldap/ActiveDirectoryUser.java +++ b/maxkey-core/src/main/java/org/maxkey/constants/ldap/ActiveDirectoryUser.java @@ -121,7 +121,13 @@ public class ActiveDirectoryUser { public static final String NAME = "name"; public static final String UID = "uid"; + /** + * First Name + */ public static final String GIVENNAME = "givenName"; + /** + * Last Name/SurName + */ public static final String SN = "sn"; public static final String INITIALS = "initials"; public static final String DESCRIPTION = "description"; @@ -143,8 +149,13 @@ public class ActiveDirectoryUser { public static final String INFO = "info"; public static final String HOMEPHONE = "homePhone"; - + /** + * admin@maxkey.top + */ public static final String USERPRINCIPALNAME = "userPrincipalName"; + /** + * maxkey\admin + */ public static final String SAMACCOUNTNAME = "sAMAccountname"; public static final String LOGONHOURS = "logonHours"; public static final String LOGONWORKSTATION = "logonWorkstation"; diff --git a/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java b/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java index b581be397..477e95bb7 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java @@ -19,7 +19,6 @@ package org.maxkey.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import java.io.IOException; -import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -271,80 +270,80 @@ public class UserInfo extends JpaBaseEntity { public static class ONLINE { // 在线 - public static final int ONLINE = 1; + public static final int ONLINE = 1; // 下线 - public static final int OFFLINE = 0; + public static final int OFFLINE = 0; } public static class MARRIED { // 未知 - public static final int UNKNOWN = 0; + public static final int UNKNOWN = 0; // 单身 - public static final int SINGLE = 1; + public static final int SINGLE = 1; // 结婚 - public static final int MARRIED = 2; + public static final int MARRIED = 2; // 离异 - public static final int DIVORCE = 3; + public static final int DIVORCE = 3; // 丧偶 - public static final int WIDOWED = 4; + public static final int WIDOWED = 4; } public static class GENDER { // 未知 - public static final int UNKNOWN = 0; + public static final int UNKNOWN = 0; // 女性 - public static final int FEMALE = 1; + public static final int FEMALE = 1; // 男性 - public static final int MALE = 2; + public static final int MALE = 2; } public static class IDTYPE { // 未知 - public static final int UNKNOWN = 0; + public static final int UNKNOWN = 0; // 身份证 - public static final int IDCARD = 1; + public static final int IDCARD = 1; // 护照 - public static final int PASSPORT = 2; + public static final int PASSPORT = 2; // 学生证 - public static final int STUDENTCARD = 3; + public static final int STUDENTCARD = 3; // 军人证 - public static final int MILITARYCARD = 4; + public static final int MILITARYCARD = 4; } public static class AUTHNTYPE { // 用户名密码 - public static final int NORMAL = 1; + public static final int NORMAL = 1; // 手机 - public static final int MOBILE = 2; + public static final int MOBILE = 2; // 短信 - public static final int SMS = 3; + public static final int SMS = 3; // 邮箱 - public static final int EMAIL = 4; + public static final int EMAIL = 4; - public static final int TIMEBASED_OPT = 5; + public static final int TIMEBASED_OPT = 5; - public static final int COUNTERBASED_OPT = 6; + public static final int COUNTERBASED_OPT = 6; - public static final int HOTP_OPT = 7; + public static final int HOTP_OPT = 7; - public static final int RSA_OPT = 8; + public static final int RSA_OPT = 8; // 证书 - public static final int CERTIFICATE = 9; + public static final int CERTIFICATE = 9; // usb证书 - public static final int USBKEY = 10; + public static final int USBKEY = 10; } public static class EMPLOYMENTSTATUS { // 在册人员 - public static final int ACTIVE = 1; + public static final int ACTIVE = 1; // 离职人员 - public static final int WITHDRAWN = 2; + public static final int WITHDRAWN = 2; // 停薪留职人员 - public static final int INACTIVE = 3; + public static final int INACTIVE = 3; // 退休人员 - public static final int RETIREE = 4; + public static final int RETIREE = 4; } @@ -1324,10 +1323,6 @@ public class UserInfo extends JpaBaseEntity { builder.append(gender); builder.append(", birthDate="); builder.append(birthDate); - builder.append(", picture="); - builder.append(Arrays.toString(picture)); - builder.append(", pictureFile="); - builder.append(pictureFile); builder.append(", idType="); builder.append(idType); builder.append(", idCardNo="); diff --git a/maxkey-lib/maxkey-client-sdk-2.0.0.RELEASE.jar b/maxkey-lib/maxkey-client-sdk-2.0.0.RELEASE.jar deleted file mode 100644 index 38aff510057bbe72359964799f5cb56d7ff2ccd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99193 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໚?JN^#Mj_x;-0`Pjg}?)5z2uiFBe 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 O%ne`>xf requestParamenter =new HashMap(); + HashMap requestParamenter =new HashMap(); String redirect_uri = ""; if(action.equalsIgnoreCase("getDomailUrl")) { String sign =DigestUtils.md5Hex @@ -96,12 +95,11 @@ public class ExtendApiCndnsApiMailAdapter extends AbstractAuthorizeAdapter { SIGN_STRING, details.getPrincipal(),timestamp,tokenMd5)); requestParamenter.put("domain", domain); - OAuthClient authkeyRestClient=new OAuthClient( - String.format(ADMIN_AUTHKEY_URI,details.getPrincipal(),sign,timestamp),HttpVerb.POST); - authkeyRestClient.addRestObject(requestParamenter); + String responseBody = new HttpRequestAdapter().post( + String.format(ADMIN_AUTHKEY_URI,details.getPrincipal(),sign,timestamp),requestParamenter); - HashMap authKey=JsonUtils.gson2Object(authkeyRestClient.execute().getBody(), HashMap.class); - redirect_uri=authKey.get("adminUrl"); + HashMap authKey=JsonUtils.gson2Object(responseBody, HashMap.class); + redirect_uri = authKey.get("adminUrl"); }else { String sign =DigestUtils.md5Hex @@ -109,11 +107,10 @@ public class ExtendApiCndnsApiMailAdapter extends AbstractAuthorizeAdapter { SIGN_EMAIL_STRING, details.getPrincipal(),userInfo.getEmail(),timestamp,tokenMd5)); requestParamenter.put("email", userInfo.getWorkEmail()); - OAuthClient authkeyRestClient=new OAuthClient( - String.format(AUTHKEY_URI,details.getPrincipal(),sign,timestamp),HttpVerb.POST); - authkeyRestClient.addRestObject(requestParamenter); + String responseBody = new HttpRequestAdapter().post( + String.format(AUTHKEY_URI,details.getPrincipal(),sign,timestamp),requestParamenter); - HashMap authKey=JsonUtils.gson2Object(authkeyRestClient.execute().getBody(), HashMap.class); + HashMap authKey=JsonUtils.gson2Object(responseBody, HashMap.class); redirect_uri=authKey.get("webmailUrl"); } diff --git a/maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiQQExmailAdapter.java b/maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiQQExmailAdapter.java index df84b0fbc..84cd96278 100644 --- a/maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiQQExmailAdapter.java +++ b/maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiQQExmailAdapter.java @@ -17,15 +17,15 @@ package org.maxkey.authz.exapi.endpoint.adapter; -import java.util.HashMap; +import java.io.Serializable; + import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter; -import org.maxkey.client.oauth.OAuthClient; -import org.maxkey.client.oauth.model.Token; import org.maxkey.entity.Accounts; import org.maxkey.entity.ExtraAttrs; import org.maxkey.entity.apps.Apps; import org.maxkey.util.HttpsTrusts; import org.maxkey.util.JsonUtils; +import org.maxkey.web.HttpRequestAdapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.ModelAndView; @@ -38,9 +38,9 @@ import org.springframework.web.servlet.ModelAndView; public class ExtendApiQQExmailAdapter extends AbstractAuthorizeAdapter { final static Logger _logger = LoggerFactory.getLogger(ExtendApiQQExmailAdapter.class); //https://exmail.qq.com/qy_mng_logic/doc#10003 - static String TOKEN_URI="https://api.exmail.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s"; + static String TOKEN_URI = "https://api.exmail.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s"; //https://exmail.qq.com/qy_mng_logic/doc#10036 - static String AUTHKEY_URI="https://api.exmail.qq.com/cgi-bin/service/get_login_url?access_token=%s&userid=%s"; + static String AUTHKEY_URI = "https://api.exmail.qq.com/cgi-bin/service/get_login_url?access_token=%s&userid=%s"; Accounts account; @@ -49,8 +49,6 @@ public class ExtendApiQQExmailAdapter extends AbstractAuthorizeAdapter { return null; } - - @SuppressWarnings("unchecked") @Override public ModelAndView authorize(ModelAndView modelAndView) { HttpsTrusts.beforeConnection(); @@ -62,23 +60,111 @@ public class ExtendApiQQExmailAdapter extends AbstractAuthorizeAdapter { extraAttrs=new ExtraAttrs(details.getExtendAttr()); } _logger.debug("Extra Attrs "+extraAttrs); - OAuthClient tokenRestClient=new OAuthClient( - String.format(TOKEN_URI,details.getPrincipal(),details.getCredentials())); - Token token =tokenRestClient.requestAccessToken(); - _logger.debug(""+token); + String responseBody = new HttpRequestAdapter().get( + String.format(TOKEN_URI,details.getPrincipal(),details.getCredentials()),null); + Token token =JsonUtils.gson2Object(responseBody,Token.class); + _logger.debug("token {}" , token); - OAuthClient authkeyRestClient=new OAuthClient( - String.format(AUTHKEY_URI,token.getAccess_token(),userInfo.getUsername())); + String authKeyBody = new HttpRequestAdapter().get( + String.format(AUTHKEY_URI,token.getAccess_token(),userInfo.getUsername()),null); - HashMap authKey=JsonUtils.gson2Object(authkeyRestClient.execute().getBody(), HashMap.class); - _logger.debug("authKey : "+authKey); + LoginUrl loginUrl=JsonUtils.gson2Object(authKeyBody, LoginUrl.class); + _logger.debug("LoginUrl {} " , loginUrl); - String redirect_uri=authKey.get("login_url"); - _logger.debug("redirect_uri : "+redirect_uri); - modelAndView.addObject("redirect_uri", redirect_uri); + modelAndView.addObject("redirect_uri", loginUrl.getLogin_url()); return modelAndView; } + + class ExMailMsg{ + + protected long expires_in; + + protected String errmsg; + + protected long errcode; + + public ExMailMsg() { + } + + public long getExpires_in() { + return expires_in; + } + + public void setExpires_in(long expires_in) { + this.expires_in = expires_in; + } + + public String getErrmsg() { + return errmsg; + } + + public void setErrmsg(String errmsg) { + this.errmsg = errmsg; + } + + public long getErrcode() { + return errcode; + } + + public void setErrcode(long errcode) { + this.errcode = errcode; + } + + + } + + class Token extends ExMailMsg implements Serializable { + private static final long serialVersionUID = 275756585220635542L; + + /** + * access_token + */ + private String access_token; + + public String getAccess_token() { + return access_token; + } + + public void setAccess_token(String access_token) { + this.access_token = access_token; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("Token [access_token="); + builder.append(access_token); + builder.append("]"); + return builder.toString(); + } + + } + + class LoginUrl extends ExMailMsg implements Serializable { + private static final long serialVersionUID = 3033047757268214198L; + private String login_url; + + public String getLogin_url() { + return login_url; + } + + public void setLogin_url(String login_url) { + this.login_url = login_url; + } + + public LoginUrl() { + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("LoginUrl [login_url="); + builder.append(login_url); + builder.append("]"); + return builder.toString(); + } + } } diff --git a/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java b/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java index 87b4fd7dc..67f06e431 100644 --- a/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java +++ b/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java @@ -117,43 +117,44 @@ public class ActiveDirectoryUsersService extends AbstractSynchronizerService userInfo.setDepartmentId(deptOrg.getId()); try { userInfo.setId(userInfo.generateId()); - userInfo.setFormattedName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.CN,attributeMap));//閸忋劌鎮� - //鐠愶附鍩� - userInfo.setUsername(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.SAMACCOUNTNAME,attributeMap));//鐠愶箑褰� - userInfo.setWindowsAccount(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.USERPRINCIPALNAME,attributeMap));//閻ц缍� + userInfo.setFormattedName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.CN,attributeMap));//cn + // + userInfo.setUsername(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.SAMACCOUNTNAME,attributeMap));//WindowsAccount + userInfo.setWindowsAccount(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.SAMACCOUNTNAME,attributeMap)); + //userInfo.setWindowsAccount(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.USERPRINCIPALNAME,attributeMap));// - //鐢瓕顫� - userInfo.setFamilyName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.SN,attributeMap));//婵拷 - userInfo.setGivenName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.GIVENNAME,attributeMap));//閸氾拷 - userInfo.setNickName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.INITIALS,attributeMap));//閺勭數袨 - userInfo.setNameZhShortSpell(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.INITIALS,attributeMap));//閼昏鲸鏋冪紓鈺佸晸 - userInfo.setDisplayName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.DISPLAYNAME,attributeMap));//閺勫墽銇氶崥宥囆� - userInfo.setDescription(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.DESCRIPTION,attributeMap));//閹诲繗鍫� - userInfo.setWorkPhoneNumber(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.TELEPHONENUMBER,attributeMap));//閻絻鐦介崣椋庣垳 - userInfo.setWorkOfficeName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.PHYSICALDELIVERYOFFICENAME,attributeMap));//閸旂偛鍙曠�癸拷 - userInfo.setWorkEmail(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.MAIL,attributeMap));//闁喕娆� - userInfo.setWebSite(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.WWWHOMEPAGE,attributeMap));//缂冩垿銆� - //閸︽澘娼� - userInfo.setWorkCountry(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.CO,attributeMap));//閸ヨ棄顔� - userInfo.setWorkRegion(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.ST,attributeMap));//閻拷 - userInfo.setWorkLocality(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.L,attributeMap));//閸橈拷 - userInfo.setWorkStreetAddress(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.STREETADDRESS,attributeMap));//鐞涙浜� - userInfo.setWorkPostalCode(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.POSTALCODE,attributeMap));//闁喚绱� - userInfo.setWorkAddressFormatted(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.POSTOFFICEBOX,attributeMap));//闁喗鏂傞柇顔绢唸 + // + userInfo.setFamilyName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.SN,attributeMap));//Last Name/SurName + userInfo.setGivenName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.GIVENNAME,attributeMap));//First Name + userInfo.setNickName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.INITIALS,attributeMap));//Initials + userInfo.setNameZhShortSpell(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.INITIALS,attributeMap));//Initials + userInfo.setDisplayName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.DISPLAYNAME,attributeMap));// + userInfo.setDescription(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.DESCRIPTION,attributeMap));// + userInfo.setWorkPhoneNumber(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.TELEPHONENUMBER,attributeMap));// + userInfo.setWorkOfficeName(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.PHYSICALDELIVERYOFFICENAME,attributeMap));// + userInfo.setWorkEmail(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.MAIL,attributeMap));// + userInfo.setWebSite(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.WWWHOMEPAGE,attributeMap));// + // + userInfo.setWorkCountry(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.CO,attributeMap));// + userInfo.setWorkRegion(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.ST,attributeMap));// + userInfo.setWorkLocality(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.L,attributeMap));// + userInfo.setWorkStreetAddress(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.STREETADDRESS,attributeMap));// + userInfo.setWorkPostalCode(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.POSTALCODE,attributeMap));// + userInfo.setWorkAddressFormatted(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.POSTOFFICEBOX,attributeMap));// if(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.MOBILE,attributeMap).equals("")) { userInfo.setMobile(userInfo.getId()); }else { - userInfo.setMobile(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.MOBILE,attributeMap));//閹靛婧� + userInfo.setMobile(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.MOBILE,attributeMap));// } - userInfo.setHomePhoneNumber(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.HOMEPHONE,attributeMap));//鐎硅泛娑甸悽浣冪樈 - userInfo.setWorkFax(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.FACSIMILETELEPHONENUMBER,attributeMap));//娴肩姷婀� - userInfo.setHomeAddressFormatted(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.INFO,attributeMap));//閻絻鐦芥径鍥ㄦ暈 + userInfo.setHomePhoneNumber(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.HOMEPHONE,attributeMap));// + userInfo.setWorkFax(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.FACSIMILETELEPHONENUMBER,attributeMap));// + userInfo.setHomeAddressFormatted(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.INFO,attributeMap));// - userInfo.setDivision(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.COMPANY,attributeMap)); //閸忣剙寰� - //userInfo.setDepartment(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.DEPARTMENT,attributeMap)); //闁劑妫� - //userInfo.setDepartmentId(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.DEPARTMENT,attributeMap)); //闁劑妫紓鏍у娇 - userInfo.setJobTitle(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.TITLE,attributeMap));//閼卞苯濮� + userInfo.setDivision(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.COMPANY,attributeMap)); // + //userInfo.setDepartment(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.DEPARTMENT,attributeMap)); // + //userInfo.setDepartmentId(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.DEPARTMENT,attributeMap)); // + userInfo.setJobTitle(LdapUtils.getAttributeStringValue(ActiveDirectoryUser.TITLE,attributeMap));// userInfo.setUserState("RESIDENT"); userInfo.setUserType("EMPLOYEE"); userInfo.setTimeZone("Asia/Shanghai");