4           A    K         ! A" #$% & '() !*+, -. /0 12 A3 45 *6< 7 8>?9 :;< 3= 3> 3? :@ A BCD :E FG :H FI JK JLMN BO BPQ BR -S T UV W XY Z[ N\ P] P^ P_`a /@ b Pc d ef g :h Bij k lm no _p qrstu Avw x y z{ |} ~    # *    z             X  # _  z - # 7  ' 3 _      _     l / A X X       P  P P    ` n B A A P P   l     l X X   X 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;isBase64 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; StackMapTableM   5<D   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;jsonNodeticket 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 initUpdate\handleSingleLogin:(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 *& /&  59zDDSsqq7Kkrf04Dtn3    ! "# $%java/lang/RuntimeException0用户不存在或授权到期,请重新登录 & %& &' () java/lang/Exception Login failed account[%s].java/lang/Object *+, -.账号或密码错误 /01 2/com/artfess/base/exception/CertificateException 3;org/springframework/security/authentication/LockedException账号被禁用或离职4 56 789 :; <2 +com/artfess/base/service/PwdStrategyService => $? @A _loginTime_ BCjava/lang/Integer D EA FG HI J KL5com/artfess/base/service/SecurityMachinePersonService MN A OP QR ST UVjava/lang/Stringjava/lang/StringBuilder 用户【 WX:】已绑定涉密机器,不能在当前机器上登录! Y XZ [ \] ^ _`java/util/HashMapcom/artfess/uc/api/model/IUser a b c loginUser%s[%s]  d efg hi  j& k&.com/artfess/base/jwt/JwtAuthenticationResponse l mn Fo pq rs*com/artfess/base/constants/SystemConstantsadmin, t*%s/p3/serviceValidate?ticket=%s&service=%s  uv $w x)y z?authenticationSuccess { |authenticationFailure }获取cas认证信息失败: ~&获取cas认证信息失败: &code=%s&redirect_uri=%s    T   获取oauth认证信息失败 . T!当前服务未开启单点登录   T $Vcom/artfess/base/conf/SsoConfigcas oauth jwt )0com/artfess/base/exception/ServerRejectException单点登录模式匹配异常!通过单点认证登录成功。 &   weChatWork  !企业微信登录返回结果: -&.com/fasterxml/jackson/databind/node/ObjectNode0UserId ? 2 T 查无与您企微账号[userid:]绑定的eip账号 *企业微信登录失败 ,eip用户账号:企业微信登录失败 : errmsg weChatOffAcc   T V'com/fasterxml/jackson/databind/JsonNode微信登录失败 : dingtalkuserid ? 查无与您钉钉账号[userid:钉钉登录失败!eip账号: 不存在钉钉登录失败 : FssoUrl  ssoLogoutUrl   )  ) ) #com/artfess/base/model/CommonResult 退出成功 % Oorg/springframework/security/authentication/UsernamePasswordAuthenticationToken   T n   +8   n n"账号在锁定状态中,请于【 W0分钟】后登录,或联系管理员解锁! A;^(?![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~!@#$%^&*()_+`\-={}:";'<>?,.\/]*$    nmobilepc T  -1 A       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; 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(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;equalsgetJsonDefault+()Lcom/fasterxml/jackson/databind/JsonNode;=(Ljava/lang/String;)Lcom/fasterxml/jackson/databind/JsonNode;asInt()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;'(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;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"#$'(+ [s,-s./& 5!z"#$'(+ [s0-s.12  =+H+> + 2+ N* - : Y=+ N:*-:+:*-S:Y-S: !!:":#$:%:&:':(*-)**:   +:  { ,-.6  /-.6  0-.6  Q K123: 3Y4:15`6Y:75 *8-9Y*-):::   -;:   <w6   =:  ? <5 >:  ?" @A:( 6  #YBYCDE-EFEGH6 *I+ J: *K L:  M: : :6NYO: P\ P:Q: R: S:TUY SY SV*W6XYZW* X[  \1]*8 ^_Y   *`abcd^ru!>O".@JLQUZ^bkruw  ,8DRWaw :AP[dhlox"L!"*3(.4567wN89R::; l<= ,`>= 8T?=  @A BC D(qE fFG HG IJ RKL#$MNO QP(UQ(^R(USTLUVEW(AX PYZ [[( d\( h3( l](o^ x_5`*.4afFb Hb x_ac@de %dddBfCf ghdddijdklm* ghdddijd Ughdddijdnoop%$ ghdddijdghdddijdqdddders!tu3v [swx[eyz{[s|} s~szs~ 6fM,ghN-:662:+(!   # ,. 4"4# (6#$63(3( ,cgdd N::iY*jkSY+SY,SlN-m:n:opo--q:(rpr-s-q:YD:tBYCuE-EGvYBYCwExEG {~!B +18BV` q!{'~#$%&("\ 1J@(8CA?89#$(B((( (c+Vgddddddl$Bf@r  N*jy:zY+SY,S:*j{:BYCEEG|}:n:g~_*j-q: *j: BYC E EG|}:  n:   ~ *j-qN:tY-!J-. /1'2F3M4Z5k6t789:@=>?A"kK[( tB( $( A '(Fp(MiA89#$(B(\( ((cdddBf 7*j:*j:- -A:+(*+A:T,(*,A:1, (*K+A: Y*%:H6*IJ: *K L:  M: : : NYO: PR P:Q: R: S: TUY SY SVXYZW, (*X[  \_Y    *`abd! G HIJK(N9OKR\SnVWY]`acdefghijklm n&o7rAtRucx"HKL#$B(s(j(STX YZ [( \( 3( ]( _5`*_acC(dd""# gdddiqdddderst3v [sx[ey{[s|} sss *+AMBYCE,EGN,nN:x-q:( -q:* : $YBYCEEEG-q:*%:H6 *IJ: *K L:  M: : : PA P:Q: S: Y:TUY SYSV*  \_Y   d:YBYCEEGYBYCE-qEG7?Bde!"~57?BDQ\fq~ <FReg"D 897KLSTX YZ [( w\( s]( o(g89q(~A3(#$(7o\J(` c}Bgdf<ddl gdddldiqdddd(gdddldfrst3v [sx[ey{[s|} sss Tm*+AMN,nN:x--q:* ::_Yd-q:*%:H6 *IJ: *K L:  M: : : PA P:Q: S: Y:TUY SYSV*  \_Y   d_YdYBYCE-qEG$'!!$')6?JWbl|"5=J") 897KLlA3(STX YZ v[( m\( i]( e(J(Wm#$mS(Q`Wmcs'gdfRdlgddldiqddddgddrst3v [sx[ey{[s|} sss \*+AMN,nN:x-!-q:* : $YBYCEEEG-q:*IJ: *%:H6 *KL: M: : : PAP:Q: S: Y: TUY SYSV*   \_Y   dYBYCEEEGYBYCE-qEG$'!~$')6?JWg ) < ]") 897KLSTX v[( m\( i]( e( J(WA3(YZ#$f(d` c'gdf0dl gddldqiddddgddldq gdrst3v [sx[ey{[s|} sss @NYON-0*jZW-*jZW-*jùZW-d!+;"*@#$@ST@85` 8art3v [sx[ey{[s|} sss X+*`ĹM,N*K-:*K-:*K-:+H6*\_Yd!"$%&')(3)9+E,"RX#$XSTJ(C[(9()/3(3%(9X t+v [sx[ey} sss C+*`ĹM,N*K-:*K-:+H6*ɻY˷̰!2345)6/798"HC#$CST5(.[($()3(/X t+v [sx[ey} sss h+W,W*λY+,йW!?@ AB" #$((rs! +**N--+: Ӷ-q:Զ-.6ն-.6ֶ-.6׶-7 ٶ-.6 0-.6 +5y+: ݸ޶߶ ݸ޶߶emb: *8+R9. e7YBYCEEG ,(,T: , 68: , 6: , 6 ++:  %: e6!3E GHIK L(N4P@RLTXVdXpZ|\]^_`bcgijmnq!r's+t3u8v:xCyGzO{T|V~_ckprx"!n I+( 3 G( O c( k  =* 4(@v=Lj=X^=dR pF= |:?= BC @A#$KL(cH kgdkld* 1gd b|:*`/,*M*K,-*`W&%:':*K,-*`W*-!*  (+CHOf{"RHSTOW(|#$|X |(|(|[( o(cL Add" gdddddgdddddd 7*`/:,*M*K,-! (+6"4(7#$7X 7(73(cAdd  ! !L'[s[ssss