如何以编程方式从使用ADFS的应用程序请求网页

时间:2016-03-11 23:14:17

标签: java oauth saml adfs ws-federation

此Web页面由Web应用程序提供,该应用程序使用Microsoft ADFS(Active Directory联合身份验证服务)进行访问控制。我可以使用浏览器请求此网页,如果我没有登录ADFS,我将被重定向到ADFS登录表单页面。提交我的凭据(用户名和密码)后,我被重定向回我最初请求的页面。一切正常。

现在,我想使用Java以编程方式请求此网页并使用ADFS处理单点登录。

要明确:这将是一个请求网页的简单CLI应用程序,如果需要,我可以在此应用程序的配置中输入用户名和密码。 (也许可以获得并配置某种令牌?)我想要访问的网页只是一个常规的HTML文档,而不是像Web服务那样花哨的东西。

我一直在阅读ADFS支持的技术,比如WS-Federation,SAML和OAuth,但是在阅读了几个小时之后,查看了实现这些技术的各种库(Apache CXF,Apache) Rampart,OpenSAML,Spring SAML,google-oauth-java-client等)我还有以下问题:

  • ADFS支持哪些协议可以或应该用于此用例?
  • 哪个Java库(或多个库)可以帮助我实现我的用例?

这个领域有很多标准,技术和首字母缩略词......我感到有点失落。

2 个答案:

答案 0 :(得分:2)

ADFS是基于Web浏览器的单点登录的解决方案。这意味着它需要一个Web浏览器来进行用户的会话管理。所有身份验证方案(如SAML,WS-Federation,OAuth)都需要将浏览器重定向到Identity Source(在您的情况下为ADFS)。

如果您希望CLI应用程序针对您的ADFS服务器进行身份验证,请考虑使用某些基础协议,例如LDAP(它将直接连接到您的Active Directory服务器进行身份验证)或WS-Trust(SOAP基于协议)或RADIUS

答案 1 :(得分:0)

Java倾向于SAML-p,因此您需要SAML堆栈。

参考:SAML : SAML connectivity / toolkit

WRT。 OAuth2,ADFS 3.0仅处理Web API,而不处理网站,例如通过OpenID Connect。