4 # #              N      G!" G#$% & '( )* +,- G. /01 2 345 )678 9: ;< => ?@ 1A? BABC DEF 9G 9H 9I DJ K LMN @O PQ @R PS TU TVWX HY HZ[ H\ 9] ^ _` a bc de Tf Vg Vh Vijk ;J l Vm n op q Dr Lst u vw xy ez {|}~        / 6                 b  / e   9 /   3 6 e      e     v ; G b b       V  V V    ` x H G G V V   v   v b b    b  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; StackMapTableW* @FN 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 initUpdatefhandleSingleLogin:(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 -) 2) "#$ % &# ' (# ) *+ ,-java/lang/RuntimeException0用户不存在或授权到期,请重新登录 !) ./message ,0 1#: 2SUCCESS 34NO_DECRYPT_WILL_DATE_LONG ()5 67 java/lang/Exception Login failed account[%s].java/lang/Object 89: ;<账号或密码错误 =>? %4/com/artfess/base/exception/CertificateException @#;org/springframework/security/authentication/LockedException账号被禁用或离职A BC DEF GH +com/artfess/base/service/PwdStrategyService I/ JK _loginTime_ LMjava/lang/Integer !N OK PQ RS T UV5com/artfess/base/service/SecurityMachinePersonService WX K YZ [\ ]^ _`java/lang/Stringjava/lang/StringBuilder 用户【 ab:】已绑定涉密机器,不能在当前机器上登录! c# ]d   e fg h ijjava/util/HashMapcom/artfess/uc/api/model/IUser k# l# m# loginUser%s[%s]  n# opq rs  t) u).com/artfess/base/jwt/JwtAuthenticationResponse v wx Py !z{ |}*com/artfess/base/constants/SystemConstantsadmin,*%s/p3/serviceValidate?ticket=%s&service=%s   ~# , 7 0authenticationSuccess authenticationFailure "获取cas认证信息失败: )获取cas认证信息失败: #&code=%s&redirect_uri=%s #   ^ # # #获取oauth认证信息失败 !< ^!当前服务未开启单点登录  # ^ ,`com/artfess/base/conf/SsoConfigcas oauth jwt 70com/artfess/base/exception/ServerRejectException单点登录模式匹配异常!通过单点认证登录成功。 ) !  weChatWork  !企业微信登录返回结果: ;).com/fasterxml/jackson/databind/node/ObjectNode0UserId 0 '4 ^ 查无与您企微账号[userid:]绑定的eip账号 !*企业微信登录失败 ,eip用户账号:企业微信登录失败 : errmsg weChatOffAcc   ^ `'com/fasterxml/jackson/databind/JsonNode微信登录失败 : dingtalkuserid 0 查无与您钉钉账号[userid:钉钉登录失败!eip账号: 不存在钉钉登录失败 : PssoUrl # ssoLogoutUrl # # 7  7 7 #com/artfess/base/model/CommonResult 退出成功 - Oorg/springframework/security/authentication/UsernamePasswordAuthenticationToken !  ^ x   +8   x x"账号在锁定状态中,请于【 a0分钟】后登录,或联系管理员解锁! K;^(?![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~!@#$%^&*()_+`\-={}:";'<>?,.\/]*$    xmobilepc ^ -1 K       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 isNotEmpty getPasswordisEmpty 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;)Zcom/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;getUserByWxWorkIdisNullK(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%&'*+.[s/0s12)#5$z%&'*+.[s30s145# s=+F+<+ 2+ N* - : Y=* N-:%2%2Y2+ ::*:+ :*T:!"#YS$%&:'(')'):  *:+,:-:.: /: &*011:   2:  (| 346  546 646R L 789: 9Y:: 7;`?Y*0@@:   A:   Bx6   C:?B5D:E"FG:  6  $YHYIJKKLKMN6 *O+ P: *Q R:  S:::6TYU: V\ V:W:X:Y:Z[#YSYS$\*]6^_`W* ^a b 7c*>deY *fghij $NS ,>HJT_")1DNS\dp| '6U_behm->GR%`# *6+,789: O;<;=>pm?@ |aA@UB@\CD NEF UG+rH 'gIJ KJ LM RNOs&'sPQqRTSD_T+U+V+W+ZXY"QZ[ )J\+ ] ^_ `+ a+6+b+cd8e*,7f'gIg Kg dfh#>ij ;ki(iiiBlDl mnkiiiiopiqkr+ mnkiiiiopi Wmnkiiiiopisttu%% mnkiiiiopimnkiiiiopiviiiijwx)yz3{[s|}[e~[ssss#6lM,mN-:662:+$ # , .4 %4# +6&'66+3+ ,hmii#N::n#Y*opSY+SY,S$qN-r:s:tut:(vuvw:YD:x!HYIyK-KMzYHYI{K|KM {~ $B +18BV`q{#~ !"$%\ 1JC+8CSD?;<&'+E+++ +h+Vmiiiiiik$Bl@w# N*o}:~#Y+SY,S$:*o:HYIKKM:s:g_*o: *o: HYI K KM:  s:    *oN:xY- $J)* +-'.F/M0Z1k2t3456<9:;=%kK`+ tB+ $+ D '+Fp+MiSD;<&'+E+a+ ++hiiiBl#7*o:*o:- -G:+*+G:T,*,G:1, *Q+G: Y*-:N6*OP: *Q R:  S: : : TYU: VR V:W: X: Y: Z[#Y SY S$\^_`W!, *^a  beY    *fghj$ C DEFG(J9KKN\OnRSUY\]_`abcdefghi j&k7nApRqct%HNO&'E+s+j+XY]^_ `+ a+ 6+ b+ d8e*dfhC(ii""# miiioviiiijwxy3{[s}[e~[ssss#*+GM!HYIK,KMN,sN:!|-: -:* : $YHYIKKKM:*-:N6 *OP: *Q R:  S: : : VA V:W: Y: _:Z[#Y SYS$\!*  beY   j:YHYIKKMYHYIK-KM7?B de $"z{5|7~?BDQ\fq~ <FReg%D ;<7NOXY] ^_ `+ wa+ sb+ o+g;<q+~D6+&'+7o\J+e h}Bmil<iik miiikioviiii(miiikilwxy3{[s}[e~[ssss#Tm*+GMN,sN:!|--:* ::eYj:*-:N6 *OP: *Q R:  S: : : VA V:W: Y: _:Z[#Y SYS$\*  beY   jeYjYHYIK-KM$' $!$')6?JWbl|"5=J%) ;<7NOlD6+XY] ^_ v`+ ma+ ib+ e+J+Wm&'mS+QeWmhs'milRikmiikioviiiimiiwxy3{[s}[e~[ssss#\*+GMN,sN:!|-!-:* : $YHYIKKKM:*OP:(*-:N6 *QR: S: : : VAV:W: Y: _: Z[#Y SYS$\*   beY   jYHYIKKKMYHYI¶K-KM$' $~$')6?JWg)< ] %) ;<7NOXY] v`+ ma+ ib+ e+ J+WD6+^_&'f+de h'mil0ik miikivoiiiimiikiv miwxy3{[s}[e~[ssss#@TYUN-6*où`W-*oŹ`W-*oǹ`W-j$+;%*@&'@XY@88e 8fwy3{[s}[e~[ssss#X+*fȹM,N*Q-:*Q-:*Q-:+N6*beYj$" !"#)$3%9'E(%RX&'XXYJ+C`+9+)/6+3%+9]y+{[s}[e~sss#C+*fȹM,N*Q-:*Q-:+N6*ͻYϷа$./01)2/394%HC&'CXY5+.`+$+)6+/]y+{[s}[e~sss#h+W,W*һY+,ԹW$;< =>% &'++wx)#+11N--2:(׶:ض46ٶ46ڶ46۶7 ݶ46 646 +;y+:  emh: *>+X?. e7YHYIKKM ,,T: , 68: , 6: , 6 ++:  (%: e6$3A CDEG H(J4L@NLPXRdTpV|XYZ[\^_cefijm!n'o+p3q8r:tCuGvOwTxVz_{c|k}p~rx%!n I++ 3G+ Oc+ k @* 4+@v@Lj@X^@dR pF@ |:B@ EF CD&'NO+hH qmiqki* 1mi#b|:*f/, *M*Q,-*fW&-:/:*Q,-*fW*-$*  (+CHOf{%RHXYO\+|&'|]|+|+|`+ o+hL Aii" miiiiimiiiiii#7*f/:, *M*Q,-$ (+6%4+7&'7]7+76+hAii "#! !$L'[s[ssss