【问题标题】:How to implement Java soap client when server uses ADFS authentication?服务器使用 ADFS 身份验证时如何实现 Java soap 客户端?
【发布时间】: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

【问题讨论】:

    标签: java soap cxf soapui adfs


    【解决方案1】:

    您不能使用 SOAP 通过登录屏幕向 ADFS 进行身份验证。这是因为 ADFS 仅支持 WS-Fed 或 SAML-P 或 OpenID Connect (ADFS 4.0)。

    您可以使用 WS-Tust 来执行此操作。

    WS-Fed 支持两个配置文件,即。被动(浏览器登录屏幕)或主动(Web 服务/WCF)。您需要使用后者。

    ADFS 中有许多可用的活动配置文件端点。默认情况下并非全部启用,因此您可能需要启用它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 2017-02-02
      • 2013-06-18
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多