问题描述
我尝试使用 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 (将#修改为@)