繁体   English   中英

服务器使用ADFS身份验证时如何实现Java soap客户端?

[英]How to implement Java soap client when server uses ADFS authentication?

我们正在Java中实现一个肥皂客户端(使用cxf wsdl2java)。 在以前的项目中,认证是基于WS-Security或Basic HTTP Authentication的。 这些都易于在SoapUI中测试并在Java中实现。

但是,这次服务器使用Web应用程序代理(用作反向代理)和ADFS(Active Directory联合身份验证服务)进行身份验证。 我不知道这意味着什么的详细信息,但是在浏览器中打开wsdl端点URL时会发生什么,就是我们被重定向到类似于Office登录页面的登录页面https://login.microsoftonline.com/ ,您在输入凭据之前手动单击了帐户类型。

手动登录时,我们将重定向回wsdl端点,并在末尾附加一个?authToken = xxx,我认为该令牌可持续1个小时。 我们试图让提供者使用更标准的身份验证,但是目前这是我们唯一的东西。 我们该如何处理?

当尝试从SoapUI发出测试请求时,我们只是获得登录页面的完整html代码作为响应。 我看到SoapUI中有一个基于表单的身份验证选项,但是由于登录页面具有多个帐户类型和多个用户名/密码字段,因此该选项不起作用。 测试的解决方法是手动登录并使用authToken。 但是,如何在Java cxf客户端中自动执行此操作?

在浏览器中连接到端点URL时,这是该URL重定向到登录页面后的外观:

[adfs服务的网址] /adfs/ls?version=1.0&action=signin&realm=urn%3AAppProxy%3Acom&appRealm=a10037ed-ca1e-e711-9436-00215a9b01ac&returnUrl= [wsdl端点网址]&client-request-id = 13A5B5A6-B574- -6FBA-A51374B5D201

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

您可以做的就是使用WS-Tust来做到这一点。

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

ADFS中有许多可用的活动配置文件终结点。 默认情况下,并非所有功能都已启用,因此您可能需要启用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM