Azure AD认证调用acquireToken方法抛出DOMSource处理异常求助
解决Azure AD ADAL4J中的DOMSource处理异常
这个问题我之前碰到过,异常信息已经把原因说得很直白了:你的项目运行时的classpath里缺少了saxon9-dom.jar这个依赖包,导致ADAL4J在解析WS-Trust响应时无法处理DOMSource对象。
为什么会出现这个问题?
当你调用acquireToken使用用户名密码流(Resource Owner Password Credentials Flow)时,ADAL4J会向Azure AD发送WS-Trust请求,返回的XML响应需要通过Saxon库完成DOM转换和解析。虽然ADAL4J本身依赖Saxon核心库,但负责DOM处理的saxon9-dom模块并不是默认的传递依赖,所以需要你手动添加到项目中。
解决方案
根据你使用的Gradle配置,把以下依赖添加到build.gradle文件里:
implementation group: 'net.sf.saxon', name: 'saxon-dom', version: '9.9.1-8'
如果你更倾向于用包含完整功能的Saxon-HE包(它已经内置了DOM处理模块),也可以添加:
implementation group: 'net.sf.saxon', name: 'Saxon-HE', version: '9.9.1-8'
注意要选择和ADAL4J 1.6.6兼容的版本,推荐用9.9.x系列的Saxon版本,避免版本冲突引发其他问题。
添加完依赖后重新构建项目,确保saxon9-dom.jar(或Saxon-HE对应的jar包)被正确加入运行时classpath,再调用acquireToken方法,这个异常应该就能解决了。
内容的提问来源于stack exchange,提问作者Jony Mittal
相关产品推荐
相关产品推荐

