带有 NTLM 身份验证的 Groovy/Java SOAP 请求

问题描述

我尝试使用 NTLM 身份验证访问 Microsoft NAV 网络服务。

我在 SoapUI 中测试了我的代码,我得到了一个带有预期响应的代码 200。

我可能低估了 NTLM 身份验证过程,只将其添加到请求属性中: '授权':'NTLM TlRMTVNTUAADAA...

使用错误的 NTLM 令牌,我收到错误 401。使用正确的令牌(由 SoapUI 提供),我收到错误 400。

如何在 groovy 脚本或 Java 中实现 NTLM 握手过程?

import groovy.text.SimpleTemplateEngine as TEMPLATE
import groovy.xml.Namespace

def file = new File('C:/myXMLfile.xml')
def template = new  TEMPLATE().createTemplate(file)
def params =  [param1:'x',param2:'y',error:false,valid:false]
def request = template.make(params).toString().getBytes('UTF-8')

def url = "http://urlduwerservice"
def conn = new URL(url).openConnection()

def reqProps = [
'Accept': 'text/xml;charset=UTF-8','Accept-Encoding': 'gzip,deflate','Content-Type': 'text/xml;charset=UTF-8','SOAPAction': '"Thisismysoapaction"','Content-Length': '2156','Host': 'thisismyhost','Connection': 'Keep-Alive','User-Agent': 'Apache-HttpClient/4.5.5 (Java/12.0.1)','Authorization':'NTLM thisismyNTLMtoken'
]
reqProps.each { key,value -> conn.addRequestProperty(key,value)}
conn.requestMethod = 'POST'

conn.doOutput = true

conn.outputStream << new ByteArrayInputStream(request)

g_log.warn(conn.responseCode);

感谢您的帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)