【发布时间】:2017-09-14 00:09:25
【问题描述】:
我们正在用Java 实现一个soap 客户端(使用cxf wsdl2java)。在以前的项目中,身份验证基于 WS-Security 或 Basic HTTP 身份验证。这些都易于在 SoapUI 中测试并在 java 中实现。
不过,这一次,服务器使用 Web 应用程序代理作为反向代理,并使用 ADFS(Active Directory 联合服务)进行身份验证。我不知道这意味着什么的详细信息,但是在浏览器中打开 wsdl 端点 URL 时发生的情况是,我们被重定向到类似于办公室登录页面 https://login.microsoftonline.com/ 的登录页面,您在其中手动单击了帐户在输入凭据之前键入。
手动登录时,我们会被重定向回 wsdl 端点,并在末尾附加 ?authToken=xxx,我认为令牌会持续 1 小时。我们试图要求提供商使用更标准的身份验证,但目前这是我们唯一拥有的。我们如何处理这个问题?
当尝试从 SoapUI 发出测试请求时,我们只是得到了登录页面的完整 html 代码作为响应。我看到 SoapUI 中有一个基于表单的身份验证选项,但它不起作用,因为登录页面有多种帐户类型和多个用户名/密码字段。测试的解决方法是手动登录并使用 authToken。但是我们如何在 Java cxf 客户端中实现自动化呢?
在浏览器中连接到端点 url 时,url 重定向到登录页面后的样子:
[adfs 服务器的 URL]/adfs/ls?version=1.0&action=signin&realm=urn%3AAppProxy%3Acom&appRealm=a10037ed-ca1e-e711-9436-00215a9b01ac&returnUrl=[wsdl 端点 url]&client-request-id=13A5B5A6- B574-0000-6FBA-A51374B5D201
【问题讨论】: