如何解决带有 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 举报,一经查实,本站将立刻删除。