DocuSign JWT登录异常及免登录访问eg011页面求助
问题解决指南
一、Tomcat部署war后JWT登录失效的修复步骤
- 检查私钥文件路径:STS运行时项目根目录是代码目录,但Tomcat部署后工作目录是Tomcat的bin目录,代码里如果用相对路径加载
private.key会找不到。把私钥文件放到src/main/resources下,代码里改用classpath:private.key加载,或者在application.properties里配置绝对路径。 - 同步环境变量配置:STS里设置的DS_CLIENT_ID、DS_IMPERSONATED_USER_ID、DS_AUTH_SERVER等JWT参数,Tomcat启动时可能没加载。把这些参数写到
src/main/resources/application.properties里,或者在Tomcat的catalina.bat(Windows)/catalina.sh(Linux)里添加环境变量,比如set DS_CLIENT_ID=你的客户端ID。 - 调整Session/Cookie配置:如果项目依赖Session存储认证状态,Tomcat默认的Cookie路径可能和项目上下文路径不匹配。在application.properties里添加
server.servlet.session.cookie.path=/你的项目上下文路径(如果war包名是code-examples-java,路径就是/code-examples-java),确保Cookie能正常传递。 - 查看Tomcat日志定位问题:打开Tomcat安装目录下的
logs/catalina.out,搜索JWT、auth相关的报错信息,比如私钥加载失败、token生成异常、API请求401/403,这些日志能直接告诉你问题根源。
二、让eg011页面无需登录直接访问的配置
- 放行Spring Security拦截:找到项目里的SecurityConfig类(如果用了Spring Security),修改
configure(HttpSecurity http)方法,添加对eg011路径的放行规则:@Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/eg011/**").permitAll() // 允许所有人访问eg011相关路径 .anyRequest().authenticated() // 保留原有其他配置(比如登录页、退出逻辑等) .and() .formLogin() // 原有登录配置 .loginPage("/login") .permitAll(); } - 移除Controller里的认证校验:打开Eg011Controller.java,找到里面判断用户是否登录的代码(比如
if (!isAuthenticated())),直接删除这段校验逻辑,让请求进来就执行业务代码。 - 提前初始化JWT API客户端:如果eg011需要调用DocuSign API,不要等用户登录才初始化客户端。创建一个配置类,在项目启动时通过JWT提前获取token并初始化ApiClient,把ApiClient注入到Eg011Controller里,这样页面就能直接调用API,不用依赖登录状态。
内容的提问来源于stack exchange,提问作者scl
相关产品推荐
相关产品推荐

