4 $ $        H   P     !" H#$ H%&' ( ) *+ ,- ./0 H1 234 !5 678 *9:; <= >? @A BC 2DA ECDF GHI :J :K :L GM N OPQ AR ST AU SV WX WYZ[ I\ I]^ I_ <` a bc d ef gh Ui Wj Wk Wlmn >M o Wp q rs t Gu Ovw x yz {| f} ~       ! 2 !9                 e  2 f   < 2    6 8 f      f     y > H e e       W  W W    ` { I H H W W   y    y e e   e loggerLorg/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;passwordEncoder>Lorg/springframework/security/crypto/password/PasswordEncoder;8Lorg/springframework/beans/factory/annotation/Autowired;()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:userNamecreateAuthenticationTokenZ(Lcom/artfess/base/jwt/JwtAuthenticationRequest;)Lorg/springframework/http/ResponseEntity;accountuserInfoLjava/util/Map;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;user Lcom/artfess/uc/api/model/IUser;authenticationRequest/Lcom/artfess/base/jwt/JwtAuthenticationRequest;isBase64jsonNode resultCode reqAccount reqPassworderrorMsgrequest'Ljavax/servlet/http/HttpServletRequest;session Ljavax/servlet/http/HttpSession;IPisMobile userDetails;Lorg/springframework/security/core/userdetails/UserDetails;tokenuserNameuserId loginStatus userAttrsLocalVariableTypeTable5Ljava/util/Map;$Ljava/util/List; StackMapTableZ- CIQ Exceptions 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;ticket casUserDetailusername errorCodegetUserNameWithOauth oauthCheckUrl checkResult checkJNodeheader tokenResultcode oauthTokenUrlstufixssoAuthy(Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/lang/String;)Lorg/springframework/http/ResponseEntity;Ljava/util/Optional;ssoModemode(Ljava/util/Optional;(Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/lang/String;)Lorg/springframework/http/ResponseEntity<*>; /sso/authGET登录系统-单点登录6Lorg/springframework/web/bind/annotation/RequestParam; ssoWeixin?(Ljava/util/Optional;)Lorg/springframework/http/ResponseEntity;tenantIdwxWorkId simpleUser resultJsonresult0Lcom/fasterxml/jackson/databind/node/ObjectNode;errcodeV(Ljava/util/Optional;)Lorg/springframework/http/ResponseEntity<*>; /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 authenticate'(Ljava/lang/String;Ljava/lang/String;)Vpassword checkUser5(Lcom/artfess/uc/api/model/IUser;Ljava/lang/String;)ZsyJ lockedTimeLjava/time/LocalDateTime;intervalMinutesLjava/lang/Long;regex currenTimesize pwdCreateTimeinitPwdpwdRule pwdLengthdurationautoUnlockTime initUpdateihandleSingleLogin:(ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V userAgent  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 #$ !"# $%8com/artfess/base/controller/AuthenticationRestController /+ 4+ &'( )59zDDSsqq7Kkrf04Dtn3 * +' , -. /0java/lang/RuntimeException0用户不存在或授权到期,请重新登录 #+ 12message /3 4': 5SUCCESS 67NO_DECRYPT_WILL_DATE_LONG *+ 8'9 :; java/lang/Exception Login failed account[%s].java/lang/Object <=> ?@账号或密码错误 ABC )7/com/artfess/base/exception/CertificateException D';org/springframework/security/authentication/LockedException账号被禁用或离职E FG HIJ KL +com/artfess/base/service/PwdStrategyService M2 NO _loginTime_ PQjava/lang/Integer #R SO TU VW X YZ5com/artfess/base/service/SecurityMachinePersonService [\ O ]^ _` ab cdjava/lang/Stringjava/lang/StringBuilder 用户【 ef:】已绑定涉密机器,不能在当前机器上登录! g' _h   i jk   l mnjava/util/HashMapcom/artfess/uc/api/model/IUser o' p' q' loginUser%s[%s]  r' stu vw  x+ y+.com/artfess/base/jwt/JwtAuthenticationResponse z {| T} #~ *com/artfess/base/constants/SystemConstantsadmin,*%s/p3/serviceValidate?ticket=%s&service=%s   ' / ; 3authenticationSuccess authenticationFailure $获取cas认证信息失败: +获取cas认证信息失败: '&code=%s&redirect_uri=%s '   b ' ' '获取oauth认证信息失败 #@ b!当前服务未开启单点登录  ' b /dcom/artfess/base/conf/SsoConfigcas oauth jwt ;0com/artfess/base/exception/ServerRejectException单点登录模式匹配异常!通过单点认证登录成功。 + #  weChatWork  !企业微信登录返回结果: ?+.com/fasterxml/jackson/databind/node/ObjectNode0UserId 3 7 b 查无与您企微账号[userid:]绑定的eip账号 #*企业微信登录失败 ,eip用户账号:企业微信登录失败 : errmsg weChatOffAcc   b d'com/fasterxml/jackson/databind/JsonNode微信登录失败 : dingtalkuserid 3 查无与您钉钉账号[userid:钉钉登录失败!eip账号: 不存在钉钉登录失败 : TssoUrl ' ssoLogoutUrl ' ' ;  ; ; #com/artfess/base/model/CommonResult 退出成功 0 Oorg/springframework/security/authentication/UsernamePasswordAuthenticationToken #  b |   +8   | |"账号在锁定状态中,请于【 e0分钟】后登录,或联系管理员解锁! O;^(?![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 b  -1 O       java/util/Map-com/artfess/base/jwt/JwtAuthenticationRequest%javax/servlet/http/HttpServletRequestjavax/servlet/http/HttpSessionjava/util/Listjava/util/Iterator9org/springframework/security/core/userdetails/UserDetails9org/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;getToken()Ljava/lang/String; com/artfess/base/util/StringUtil isNotEmptyequalsIgnoreCase getUsername%com/artfess/base/feign/UCFeignServicegetDetailByAccountOrId#(Ljava/lang/String;)Ljava/util/Map;get&(Ljava/lang/Object;)Ljava/lang/Object;checkSysAuthorization+()Lcom/fasterxml/jackson/databind/JsonNode;=(Ljava/lang/String;)Lcom/fasterxml/jackson/databind/JsonNode;asText'(Ljava/lang/String;)[Ljava/lang/String;equals(Ljava/lang/Object;)Z getPasswordcom/artfess/base/util/Base64 getFromBase64&(Ljava/lang/String;)Ljava/lang/String;format9(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 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;getJsonDefaultasInt()I getAttribute&(Ljava/lang/String;)Ljava/lang/Object;(I)VintValuevalueOf(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;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString*(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 getTenantIdput8(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()J(J)Ljava/lang/Long;k(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; getCasUrl com/artfess/base/util/FluentUtilcom/artfess/base/util/XmlUtiltoJsoncom/artfess/base/util/JsonUtil toJsonNodehasprintStackTraceinfogetOauthTokenUrlgetOauthBasicHeader"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;isObjectgetOauthAccesstokenKeygetOauthCheckUrlgetOauthUsernameKeyisEnableorg/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/ApplicationFeignServicegetUserInfoUrlsendHttpsRequestJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;getUserByWxWorkIdisEmptyisNullK(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)VgetUserByOpenId9(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;!$       s !"#$%/*&K' ()*+%`*M,+,+&o pqr' (),- .)/+%5&v'(),-0[s12s34+%5&z'(),-0[s52s367% u=+H+> + 2+ N* - : Y=* N-:%2%2Y2+ ::*:+:* T:"#$YS%&':()(*(*:  +:,-:.:/: 0: '*122:   3:  )| 456  656 756R L 89:: :Y;: 8<`=Y:><*?@Y*1AA:   B:   Cx6   D:?C5E:F"GH:  6  $YIYJKLLMLNO6 *P+ Q: *R S:  T:::6UYV: W\ W:X:Y:Z:[\$YSYS%]*^6_`aW* _b c 8d*?efY *ghijk!&NS".@JLVa $+3FPU^fr~ )8Wadgjo/@IT'`#"*8-.9:;< O=>;?@rmAB ~aCBUDB^EF PGH WI-rJ )gKL ML NO RPQu()uRSsTVUFaV-W-X-Y-ZZ[$Q\] +J^- _ `a b- c-8-d-ef:g*.9h)gKi Mi fhj#@kl ;mk(kkkBnDn opmkkkkqrksmt+ opmkkkkqrk Wopmkkkkqrkuvvw%% opmkkkkqrkopmkkkkqrkxkkkklyz*{|3}[s~[e[ssss%6mM,nN-:662:+&  # , . 4'4# -6()68-3- ,jokk%N::o$Y*pqSY+SY,S%rN-s:t:uvu:(wvwx:YD:y"IYJzL-LN{YIYJ|L}LN {~!&B +18BV`q{$~ !"#%'\ 1JE-8CUF?=>()-G--- -j+Vokkkkkkm$Bn@y% N*p~:$Y+SY,S%:*p:IYJLLN:t:g_*p: *p: IYJ L LN:  t:    *pN:yY-!&J*+ ,.'/F0M1Z2k3t4567=:;<>'kKb- tB- $- F '-Fp-MiUF=>()-G-c- --jkkkBn%7*p:*p:- -H:+*+H:T,*,H:1, *R+H: Y*.:O6*PQ: *R S:  T: : : UYV: WR W:X: Y: Z: [\$Y SY S%]_`aW", *_b  cfY    *ghik& D EFGH(K9LKO\PnSTVZ]^`abcdefghij k&l7oAqRrcu'HPQ()G-s-j-Z[_`a b- c- 8- d- f:g*fhjC(kk""# okkkqxkkkklyz{3}[s[e[ssss%*+HM"IYJL,LNN,tN:"}-: -:* : $YIYJLLLN:*.:O6 *PQ: *R S:  T: : : WA W:X: Z: `:[\$Y SYS%]"*  cfY   k:YIYJLLNYIYJL-LN7?B!de!&"{|5}7?BDQ\fq~ <FReg'D =>7PQZ[_ `a b- wc- sd- o-g=>q-~F8-()-7o\J-g j}Bokn<kkm okkkmkqxkkkk(okkkmknyz{3}[s[e[ssss%Tm*+HMN,tN:"}--:* ::fYk:*.:O6 *PQ: *R S:  T: : : WA W:X: Z: `:[\$Y SYS%]*  cfY   kfYkYIYJL-LN$'!&!$')6?JWbl|"5=J') =>7PQlF8-Z[_ `a vb- mc- id- e-J-Wm()mS-QgWmjs'oknRkmokkmkqxkkkkokkyz{3}[s[e[ssss%\*+HMN,tN:"}-!-:* : $YIYJLLLN:*PQ:)*.:O6 *RS: T: : : WAW:X: Z: `: [\$Y SYS%]*   cfY   kYIYJLL¶LNYIYJöL-LN$'!&~$')6?JWg)< ] ') =>7PQZ[_ vb- mc- id- e- J-WF8-`a()f-dg j'okn0km okkmkxqkkkkokkmkx okyz{3}[s[e[ssss%@UYVN-7*pĹaW-*pƹaW-*pȹaW-k&+;'*@()@Z[@8:g 8hy{3}[s[e[ssss%X+*gɹM,N*R-:*R-:*R-:+O6*cfYk&"!"#$)%3&9(E)'RX()XZ[J-Cb-9-)/8-3%-9_{+}[s[esss%C+*gɹM,N*R-:*R-:+O6*λYзѰ&/012)3/495'HC()CZ[5-.b-$-)8-/_{+}[s[esss%h+W,W*ӻY+,չW&<= >?' ()--yz*%+22N--3:)ض:ٶ56ڶ56۶56ܶ7 ޶56 756 +<y+:  emi: *?+Y@. e7YIYJLLN ,,T: , 68: , 6: , 6 ++:  )%: e6&3B DEFH I(K4M@OLQXSdUpW|YZ[\]_`dfgjkn!o'p+q3r8s:uCvGwOxTyV{_|c}k~prx'!n I+- 3G- Oc- k B* 4-@vBLjBX^BdR pFB |:DB GH EF()PQ-jH soksmk* 1ok%b|:*g/,*M*R,-*gW&.:0:*R,-*gW*-&*  (+CHOf{'RHZ[O^-|()|_|-|-|b- o-jL Akk" okkkkkokkkkkk%7*g/:,*M*R,-& (+6'4-7()7_7-78-jAkk $%! "&L'[s[ssss