4 . / 012 3 4 56 7 89: .;< = > ?@ > AB ?C DE F DG HI JK LMN HO PQR S TUV %WXY Z[ \] ^_ `a Hb cd /e_ f gabh ijk 8l 8m 8n io p qrs ?tu Av wx Ay wz {| {}~ Z     E Q. S S S \o  S    i q   b  H      O   P W         ? |  > Z~  ` b          t P b   Z P f   T       bt       \ H    t     S  S S  !" #$  % &'` A() *+ H,- H./0 S1 S2  3 4567 8 9 :; < = > ? @A B CDE FGloggerLorg/slf4j/Logger;authenticationManagerCLorg/springframework/security/authentication/AuthenticationManager;RuntimeVisibleAnnotationsLjavax/annotation/Resource;jwtTokenHandler&Lcom/artfess/base/jwt/JwtTokenHandler;userDetailsServiceBLorg/springframework/security/core/userdetails/UserDetailsService; ssoConfig!Lcom/artfess/base/conf/SsoConfig;demoModeZ4Lorg/springframework/beans/factory/annotation/Value;value${system.mode.demo:false}uCFeignService'Lcom/artfess/base/feign/UCFeignService;applicationFeignService0Lcom/artfess/base/feign/ApplicationFeignService;loginLogService*Lcom/artfess/base/service/LoginLogService;loginUserService+Lcom/artfess/base/service/LoginUserService; saasConfig"Lcom/artfess/base/conf/SaaSConfig; jwtConfig!Lcom/artfess/base/conf/JwtConfig; cacheManager%Lcom/artfess/base/cache/CacheManager; cacheSetting-Lcom/artfess/base/cache/setting/CacheSetting;()VCodeLineNumberTableLocalVariableTablethis:Lcom/artfess/base/controller/AuthenticationRestController;deleteUserDetailsCache(Ljava/lang/String;)V userAccountLjava/lang/String;beandelUserDetailsCache.Lcom/artfess/base/cache/annotation/CacheEvict;bpm:uc:userAccountkey #userAccountdelUsernamesCachebpm:uc:userName getSsoAccount&(Ljava/lang/String;)Ljava/lang/String;cacheLcom/artfess/base/cache/ICache;userLjava/lang/Object; StackMapTableHN putSsoAccount'(Ljava/lang/String;Ljava/lang/String;)VfileJsoncreateAuthenticationTokenZ(Lcom/artfess/base/jwt/JwtAuthenticationRequest;)Lorg/springframework/http/ResponseEntity;ce1Lcom/artfess/base/exception/CertificateException;eLjava/lang/Exception; loginTimesLjava/lang/Integer; lockStatusI lockTimesenablejson)Lcom/fasterxml/jackson/databind/JsonNode;service-Lcom/artfess/base/service/PwdStrategyService;ipallowdedipListLjava/util/List; machineIdListmachineService7Lcom/artfess/base/service/SecurityMachinePersonService; Lcom/artfess/uc/api/model/IUser;authenticationRequest/Lcom/artfess/base/jwt/JwtAuthenticationRequest; reqAccount reqPassworderrorMsgrequest'Ljavax/servlet/http/HttpServletRequest;session Ljavax/servlet/http/HttpSession;IPisMobile userDetails;Lorg/springframework/security/core/userdetails/UserDetails;tokenuserNameaccountuserId loginStatus userAttrsLjava/util/Map;LocalVariableTypeTable$Ljava/util/List;5Ljava/util/Map;2I~KJKdkuLMNO ExceptionsP Signature](Lcom/artfess/base/jwt/JwtAuthenticationRequest;)Lorg/springframework/http/ResponseEntity<*>;8Lorg/springframework/web/bind/annotation/RequestMapping;/authmethod7Lorg/springframework/web/bind/annotation/RequestMethod;POSTproducesapplication/json; charset=utf-8%Lio/swagger/annotations/ApiOperation; 登录系统 httpMethodnotes"RuntimeVisibleParameterAnnotations5Lorg/springframework/web/bind/annotation/RequestBody;isAdmin(Ljava/lang/String;)Z_accounttmpsplit[Ljava/lang/String;getUserNameWithCas8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;jsonNodeticket casUserDetailusername errorCodeQgetUserNameWithOauth oauthCheckUrl checkResult checkJNodeheader tokenResultcode oauthTokenUrlstufix?(Ljava/util/Optional;)Lorg/springframework/http/ResponseEntity;resulttenantIdjwt0Lcom/artfess/base/jwt/JwtAuthenticationResponse;jwtStruseJsonuserStrssoTokenLjava/util/Optional; ssoTokenStrparamMap resultJson(Ljava/util/Optional;5Ljava/util/Map;RSV(Ljava/util/Optional;)Lorg/springframework/http/ResponseEntity<*>; /sso/accountGET外部系统token登录6Lorg/springframework/web/bind/annotation/RequestParam;ssoAuthy(Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/lang/String;)Lorg/springframework/http/ResponseEntity;ssoModemode(Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/lang/String;)Lorg/springframework/http/ResponseEntity<*>; /sso/auth登录系统-单点登录 ssoWeixinwxWorkId simpleUser0Lcom/fasterxml/jackson/databind/node/ObjectNode;errcode /sso/weixin.企业微信应用进入手机端-单点登录 weixinPublicnodeopenidr%Lcom/artfess/base/model/CommonResult;PLcom/artfess/base/model/CommonResult;/sso/weixinPublic微信公众号进入手机端dingTalk dingtalkId /sso/dingTalk钉钉进入手机端isUseCasz(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Lorg/springframework/http/ResponseEntity;response(Ljavax/servlet/http/HttpServletResponse;map(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Lorg/springframework/http/ResponseEntity;>; /sso/info单点登录配置 refreshAndGetAuthenticationTokenR(Ljavax/servlet/http/HttpServletRequest;)Lorg/springframework/http/ResponseEntity; authTokenrefreshedTokenU(Ljavax/servlet/http/HttpServletRequest;)Lorg/springframework/http/ResponseEntity<*>;/refresh 刷新tokensignoutN(Ljavax/servlet/http/HttpServletRequest;)Lcom/artfess/base/model/CommonResult;b(Ljavax/servlet/http/HttpServletRequest;)Lcom/artfess/base/model/CommonResult;/signout 退出登录F使token的状态失效,必须设置jwt.single和jwt.stricky均为true authenticatepassword checkUser5(Lcom/artfess/uc/api/model/IUser;Ljava/lang/String;)ZsyJ lockedTimeLjava/time/LocalDateTime;intervalMinutesLjava/lang/Long;regex currenTimesize pwdCreateTimeinitPwdpwdRule pwdLengthdurationautoUnlockTime initUpdateTUhandleSingleLogin:(ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V userAgentV handleLogout((ZLjava/lang/String;Ljava/lang/String;)V SourceFile!AuthenticationRestController.java8Lorg/springframework/web/bind/annotation/RestController;Lio/swagger/annotations/Api;tags 认证接口&Lcom/artfess/base/annotation/ApiGroup;group group_bpm group_form group_systemgroup_uc 89 WXY Z[8com/artfess/base/controller/AuthenticationRestController D@ I@ 45 67\ ]^java/lang/StringBuilder(com/artfess/base/constants/CacheKeyConstsso:uc:userAccount: _` abH cdU ef ghI ib ?@ jbk lL Ujava/lang/Exception Login failed account[%s].java/lang/Object mno pq账号或密码错误 rst uv/com/artfess/base/exception/CertificateException wb;org/springframework/security/authentication/LockedException账号被禁用或离职x yzJ {|} ~ u v +com/artfess/base/service/PwdStrategyService  c  _loginTime_K java/lang/Integer 8  e  ./ java/lang/RuntimeException 8@5com/artfess/base/service/SecurityMachinePersonService L   M  java/lang/String 用户【:】已绑定涉密机器,不能在当前机器上登录! y     Njava/util/HashMapcom/artfess/uc/api/model/IUser b b b loginUser%s[%s]  bO g   @ @.com/artfess/base/jwt/JwtAuthenticationResponse 23  8 *com/artfess/base/constants/SystemConstantsadmin, *%s/p3/serviceValidate?ticket=%s&service=%s !" b c L authenticationSuccess  bauthenticationFailure 9获取cas认证信息失败: @获取cas认证信息失败: b&code=%s&redirect_uri=%s b    b b b获取oauth认证信息失败 8qR c *http://101.35.250.186/api/oauth/checkToken 200data-外部系统验证token失败!失败消息:msg 外部系统验证token失败!5外部系统验证token失败!可能网络不通! KL  8  TU"外部系统登录失败!账号: 不存在!*外部系统登录失败!账号为空! !当前服务未开启单点登录  b com/artfess/base/conf/SsoConfigcas oauth  L0com/artfess/base/exception/ServerRejectException单点登录模式匹配异常!通过单点认证登录成功。 @ 8 *+ weChatWork  !企业微信登录返回结果: p@.com/fasterxml/jackson/databind/node/ObjectNode0UserId ()  v  查无与您企微账号[userid:]绑定的eip账号*企业微信登录失败 ,eip用户账号:企业微信登录失败 : errmsg weChatOffAcc    'com/fasterxml/jackson/databind/JsonNode微信登录失败 : dingtalkuserid  查无与您钉钉账号[userid:钉钉登录失败!eip账号: 不存在钉钉登录失败 : essoUrl b ssoLogoutUrl b b L  L L  #com/artfess/base/model/CommonResult 退出成功 d Oorg/springframework/security/authentication/UsernamePasswordAuthenticationToken 8     T +8    "账号在锁定状态中,请于【 _0分钟】后登录,或联系管理员解锁! ;^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$ j^(?=.*?[A-Za-z])(?=.*?\d)(?=.*?[~!@#$%^&*()_+`\-={}:";'<>?,.\/])[a-zA-Z\d~!@#$%^&*()_+`\-={}:";'<>?,.\/]*$s^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!@#$%^&*()_+`\-={}:";'<>?,.\/])[a-zA-Z\d~!@#$%^&*()_+`\-={}:";'<>?,.\/]*$     mobilepc   01 -1       ,-V U  单点登录缓存 com/artfess/base/cache/ICache-com/artfess/base/jwt/JwtAuthenticationRequest%javax/servlet/http/HttpServletRequestjavax/servlet/http/HttpSessionjava/util/Listjava/util/Iterator9org/springframework/security/core/userdetails/UserDetails java/util/Map9org/springframework/security/core/AuthenticationExceptionjava/io/IOExceptionjava/util/Optional.org/apache/http/client/ClientProtocolExceptionjava/time/LocalDateTimejava/lang/Long(com/artfess/base/service/LoginLogServicegetClass()Ljava/lang/Class;com/artfess/base/util/AppUtilgetBean%(Ljava/lang/Class;)Ljava/lang/Object;#com/artfess/base/cache/CacheManagergetCache`(Ljava/lang/String;Lcom/artfess/base/cache/setting/CacheSetting;)Lcom/artfess/base/cache/ICache;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;get&(Ljava/lang/Object;)Ljava/lang/Object;valueOf(J)Ljava/lang/Long;put7(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Long;)V getUsername getPasswordcom/artfess/base/util/Base64 getFromBase64format9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;org/slf4j/Loggererror*(Ljava/lang/String;Ljava/lang/Throwable;)VgetCause()Ljava/lang/Throwable;com/artfess/base/util/BeanUtils isNotEmpty(Ljava/lang/Object;)Z getMessagecom/artfess/base/util/HttpUtil getRequest)()Ljavax/servlet/http/HttpServletRequest; getSession"()Ljavax/servlet/http/HttpSession;com/artfess/base/util/IPUtils getIpAddr;(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String; com/artfess/base/util/StringUtilequalsgetJsonDefault+()Lcom/fasterxml/jackson/databind/JsonNode;=(Ljava/lang/String;)Lcom/fasterxml/jackson/databind/JsonNode;asInt()I getAttribute&(Ljava/lang/String;)Ljava/lang/Object;(I)VintValue(I)Ljava/lang/Integer; setAttribute'(Ljava/lang/String;Ljava/lang/Object;)V)com/artfess/base/service/LoginUserService lockedUser(Ljava/lang/String;I)VqueryPersonLimitByAccount$(Ljava/lang/String;)Ljava/util/List;queryMachineIps"(Ljava/util/List;)Ljava/util/List;iterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object;*(Ljavax/servlet/http/HttpServletRequest;)Z@org/springframework/security/core/userdetails/UserDetailsServiceloadUserByUsernameO(Ljava/lang/String;)Lorg/springframework/security/core/userdetails/UserDetails;$com/artfess/base/jwt/JwtTokenHandler generateTokenO(Lorg/springframework/security/core/userdetails/UserDetails;)Ljava/lang/String; getFullname getAccount getUserId getTenantId8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;com/artfess/base/util/MapUtil getString5(Ljava/util/Map;Ljava/lang/String;)Ljava/lang/String;removeAttributeupdateLastLoginTimecom/artfess/base/conf/JwtConfiggetExpirationLong()Jk(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;ZLjava/util/Map;)V'org/springframework/http/ResponseEntityok=(Ljava/lang/Object;)Lorg/springframework/http/ResponseEntity;'(Ljava/lang/String;)[Ljava/lang/String; getCasUrl com/artfess/base/util/FluentUtilcom/artfess/base/util/XmlUtiltoJsoncom/artfess/base/util/JsonUtil toJsonNodehasasTextprintStackTraceinfogetOauthTokenUrlgetOauthBasicHeader"org/apache/http/entity/ContentTypeAPPLICATION_FORM_URLENCODED$Lorg/apache/http/entity/ContentType;postn(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Lorg/apache/http/entity/ContentType;)Ljava/lang/String;isObjectgetOauthAccesstokenKeygetOauthCheckUrlgetOauthUsernameKey=(Ljava/lang/Object;)Lcom/fasterxml/jackson/databind/JsonNode;sendHttpRequestJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;isEmptyK(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V&(Ljava/lang/Object;)Ljava/lang/String;isEnableorg/springframework/util/AssertisTrue(ZLjava/lang/String;)VgetMode isPresentgetUsernameFromTokendebugj(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/util/Map;)V.com/artfess/base/feign/ApplicationFeignServicegetUserInfoUrlsendHttpsRequest%com/artfess/base/feign/UCFeignServicegetUserByWxWorkIdisNullgetUserByOpenId9(Ljava/lang/String;)Lcom/artfess/base/model/CommonResult;getState()Ljava/lang/Boolean;java/lang/Boolean booleanValuegetValuegetUserByDingtalkId(Z)Ljava/lang/Boolean; getSsoUrlgetSsoLogoutUrl getHeader substring(I)Ljava/lang/String;getTenantIdFromToken refreshTokenjava/util/ObjectsrequireNonNull'(Ljava/lang/Object;Ljava/lang/Object;)VAorg/springframework/security/authentication/AuthenticationManagerf(Lorg/springframework/security/core/Authentication;)Lorg/springframework/security/core/Authentication;asLonggetLockedStatus()Ljava/lang/Integer; getLockedTime()Ljava/time/LocalDateTime;nowjava/time/ZoneOffsetof*(Ljava/lang/String;)Ljava/time/ZoneOffset; toInstant+(Ljava/time/ZoneOffset;)Ljava/time/Instant;java/time/Instant toEpochMilli longValue(J)Ljava/lang/StringBuilder;lengthmatchesgetLastLoginTimegetPwdCreateTime toLocalDate()Ljava/time/LocalDate;java/time/LocalDate toEpochDayisSingle com/artfess/base/conf/SaaSConfig getExpirationputTokenInCache](Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;o(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;logremoveFromCache9(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Vorg/slf4j/LoggerFactory getLogger%(Ljava/lang/Class;)Lorg/slf4j/Logger;+com/artfess/base/cache/setting/CacheSetting buildDefaultA(Ljava/lang/String;)Lcom/artfess/base/cache/setting/CacheSetting;! !"#$ %&s'()*+,-./0123456789:/*;L< =>?@:`*M,+,+;o pqr< =>AB C>D@:5;v<=>ABE&[sFGsHI@:5;z<=>ABE&[sJGsHKL:4* M, Y +N--;)-/<*4=>4AB%MN) OPQ /RSTU:0* N- Y +,;/<*0=>0AB0VB!MNWX:P +MN*,:+N*,-S:Y,S !":#$#%#%:&:'(:):*:+:,"-*,.//:0:  ${ 1236  4236  5236  Q K678:  8Y9: 6 :`;Y: < : *=,>?Y@*,.AA:,B:   Cw6  D:  ? C5 E:  F" GH:  - 6  #?Y Y I,J@K6*L+M: *N O:  P: : : 6QYR: S[ S:T: U: V: WXY SY S Y*-Z6[\]W*[^  _6`*= abY    *cdef";F "$;?U_fnrw$.9CKUZdsv%-4=FOkt<._YZ$N[\:]^ l_` `a` Tb` cd efgB vqh$ fij dkj Ulm4QOn=>opqBrBsBwTtuKvwDxBy$z{ |B }B ~B B $% fi dk %Q "C * U %$%3&[s[e[s&sss:6hM,ijN-:662:+-; # , .4 <4# B6=>6~B3B ,Q:N::kY*lmSY+SY,S nN-o:p:qrq2s2t:(uru2v2t:?Y@D:w Y x-y?Y Y z{@ {~;B +18BV`q{#~ !"$<\ 1JcB8Cd?[\=>BeBBB BQ+V$B@: N*l|:}Y+SY,S :*l~: Y :p:g_*l2t: *l: Y   :  p:    *l2tN:w?Y-;J)* +-'.F/M0Z1k2t3456<9:;=<kK|B tBB $B d 'BFpBMid[\=>BeB}B BBQB~:"+HMQYRN-,]W-:::,kp:v2Mv2t-22t:1?Y Y 2t@?Y@ ?Y@,4*:*LM:$*):  K6 *NO: P: : :SAS:T: V: \: WXY SYS Y*  _*=abY   ::*f?Y Y @p:bY2t2t2t2tf?Y@;+ghij k.l2m:nAoKp]qqsvxy{|}~(1MYdu|<A^d7Ontu y$ |B }B B Bu|Bz{3d)B=>B d.B2~BQ q#  <  93&[s[e[s&sss:F*l:*l:- -H:+-*+H:T,-*,H:1, -*N+H: Y*):K6*LM: *N O:  P: : : QYR: SR S:T: U: V: WXY SY S Y[\]W, -*[^  _*= abY    *cdf;! (9K\n &7ARcn<HOn=>eB~BuBtuy$z{ |B }B ~B B *QC(""# 3&[s[e[s&sss:*+HM Y ,N,pN:{-t:-+-t:*: $?Y Y @2t:*):K6 *LM: *N O:  P: : : SA S:T: V: \:WXY SYS Y*  _*=abY   f:?Y Y ¶@?Y Y ö-Ķt@7?Bop;#57?BDQ\fq~ < F R ]pr<D [\7Ontuy$ z{ |B }B ~B zBr[\qB~d~B=>B7z\UB Q}B< 33&[s[e[s&sss:cx*+HMN,pN:{-ƶǙ-ƶt:*:ɶʙ:,bY͸f2t:*):K6 *LM: *N O:  P: : : SA S:T: V: \:WXY SYS Y*  _*=abY   f,bY͸f?Y Y ζ-Ķt@$';"$ ')6!?"J#W$b%l&|')+-.0123456789:="?-A@CHDUH<) [\7Onld~Btuy$ z{ |B x}B tB pBJ BWx=>x^B\WxQs'R)3&[s[e[s&sss:k*+HиMN,pN:{-ѶǙ,-Ѷt:*: $?Y Y Ӷ@2t:*LM:$*):K6 *NO: P: : : SAS:T: V: \: WXY SYS Y*   _*=abY   f?Y Y Զն@?Y Y ֶ-Ķt@$'; NOQ$T'R)S6U?WJYWZg[]_`befghijklmnops)u4wGyh|<) [\7Ontuy$ |B x}B tB pB JBWd~Bz{=>qBo Q'0 ) 3&[s[e[s&sss:@QYRN-5*l׹]W-*lٹ]W-*l۹]W-f;+;<*@=>@tu@8 83&[s[e[s&sss:X+*cܹM,N*N-:*N-:*N-:+K6*_bYf;")39E<RX=>XtuJBC|B9B)/~B3%B9y$+&[s[e&sss:C+*cܹM,N*N-:*N-:+K6*Y;)/9<HC=>Ctu5B.|B$B)~B/y$+&[s[e&sssU:h+W,W*Y+,W; < =>BB%:+//N--0:$2t:23623623627 236 5236 +:y+:  em: *=+U>. e7?Y Y @ ,-,W: , 6:: , 6: , 6 ++:  $%: e6;3  (4@LXdp|!',49;DIQVXafnsu{<! n  I  ,B 4$IB Q$fB n$  `* 4B@y`Lm`Xa`dU pI` |=b` ef cd=>OnBQH * 1:g  :*c 0,*   M*N,-*cW&):+:*N,-*cW*-  ;* *.FKRi !<RKtuRxB=>y$BB|BrBQL B " ::*c 2  :,*   M*N,-;+ ,.*/.193<4 B:=>:y$:B:~BQB !9:. ; Mg"#'$%&[s'()[s*s+s,s-