$$ts=2021-10-11 11:30:38 $$msg=开放平台过滤器:: $$ts=2021-10-11 11:30:38 $$msg=开放平台过滤器:: $$ts=2021-10-11 11:30:38 $$msg=decrypt::provider::com.sun.crypto.provider.SunJCE $$ts=2021-10-11 11:30:38 $$msg=>>>>>>>>>>>>>>>客户端模式获取token<<<<<<<<<<<<<< $$ts=2021-10-11 11:30:38 $$msg=decrypt::provider::com.sun.crypto.provider.SunJCE $$ts=2021-10-11 11:30:38 $$msg=>>>>>>>>>>>>>>>客户端模式获取token<<<<<<<<<<<<<< $$ts=2021-10-11 11:30:38 $$msg=##get access_token::271aa1d24913037f8983acee0461c4a4 $$ts=2021-10-11 11:30:38 $$msg=###access_token###::null $$ts=2021-10-11 11:30:38 $$msg=###tenant_id###::null $$ts=2021-10-11 11:30:38 $$msg=Request unauthorized nc.ws.opm.pub.exception.BizException: Request unauthorized at nccloud.ws.opm.core.filter.OpenCloudSecurityFilter.doFilter(OpenCloudSecurityFilter.java:209) at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at nccloud.framework.core.filter.CorsFilter.handleNonCORS(CorsFilter.java:456) at nccloud.framework.core.filter.CorsFilter.doFilter(CorsFilter.java:165) at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at nccloud.framework.core.filter.SecurityFilter.doFilter(SecurityFilter.java:94) at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at nccloud.framework.core.filter.EntryLeaveFilter.doFilter(EntryLeaveFilter.java:54) at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at nccloud.framework.core.filter.HostFilter.doFilter(HostFilter.java:47) at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.tongweb.web.thor.core.ThorStandardWrapperValve.invoke(ThorStandardWrapperValve.java:202) at com.tongweb.web.thor.core.StandardContextValve.invoke(StandardContextValve.java:297) at com.tongweb.twnt.thor.OpenEJBValve.invoke(OpenEJBValve.java:46) at com.tongweb.web.thor.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at com.tongweb.web.thor.core.ThorStandardHostValve.invoke(ThorStandardHostValve.java:282) at com.tongweb.web.thor.valves.AccessLogValve.invoke(AccessLogValve.java:929)
1 个回复
nccloud
问题分析
NC Cloud 所有openapi的调用日志位于nchome/nclogs/server/下的restinfo.log中,可以根据此处的日志判断接口调用情况。
排查日志发现如下报错
$$ts=2021-10-11 11:30:38 $$msg=开放平台过滤器::
$$ts=2021-10-11 11:30:38 $$msg=开放平台过滤器::
$$ts=2021-10-11 11:30:38 $$msg=decrypt::provider::com.sun.crypto.provider.SunJCE
$$ts=2021-10-11 11:30:38 $$msg=>>>>>>>>>>>>>>>客户端模式获取token<<<<<<<<<<<<<<
$$ts=2021-10-11 11:30:38 $$msg=decrypt::provider::com.sun.crypto.provider.SunJCE
$$ts=2021-10-11 11:30:38 $$msg=>>>>>>>>>>>>>>>客户端模式获取token<<<<<<<<<<<<<<
$$ts=2021-10-11 11:30:38 $$msg=##get access_token::271aa1d24913037f8983acee0461c4a4
$$ts=2021-10-11 11:30:38 $$msg=###access_token###::null
$$ts=2021-10-11 11:30:38 $$msg=###tenant_id###::null
$$ts=2021-10-11 11:30:38 $$msg=Request unauthorized
nc.ws.opm.pub.exception.BizException: Request unauthorized
at nccloud.ws.opm.core.filter.OpenCloudSecurityFilter.doFilter(OpenCloudSecurityFilter.java:209)
at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at nccloud.framework.core.filter.CorsFilter.handleNonCORS(CorsFilter.java:456)
at nccloud.framework.core.filter.CorsFilter.doFilter(CorsFilter.java:165)
at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at nccloud.framework.core.filter.SecurityFilter.doFilter(SecurityFilter.java:94)
at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at nccloud.framework.core.filter.EntryLeaveFilter.doFilter(EntryLeaveFilter.java:54)
at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at nccloud.framework.core.filter.HostFilter.doFilter(HostFilter.java:47)
at com.tongweb.web.thor.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at com.tongweb.web.thor.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.tongweb.web.thor.core.ThorStandardWrapperValve.invoke(ThorStandardWrapperValve.java:202)
at com.tongweb.web.thor.core.StandardContextValve.invoke(StandardContextValve.java:297)
at com.tongweb.twnt.thor.OpenEJBValve.invoke(OpenEJBValve.java:46)
at com.tongweb.web.thor.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at com.tongweb.web.thor.core.ThorStandardHostValve.invoke(ThorStandardHostValve.java:282)
at com.tongweb.web.thor.valves.AccessLogValve.invoke(AccessLogValve.java:929)
说明请求时没有获取到鉴权信息。基于开发人员辅助分析,存在已知的问题是如项目启用了nginx等但没有做传参配置优化,可能导致鉴权信息不完整。
解决
经排查发现项目的确启用了nginx做负载均衡,则需要增加如下配置,之后重启nginx 解决。
---长连接,不设置会丢包,导致报null
---注意需要配置在server-location下,配全局可能有问题
proxy_set_header Connection keep-alive;
---传参带下划线兼容
underscores_in_headers on;