使用java读取从azure活动目录收到的SAML响应

问题描述 投票:0回答:2

我是azure活动目录(AAD)的新手,到目前为止,我已经在azure AD中创建了企业应用程序并设置了此应用程序,我为Single sign-on option选择了集成的Windows auth(IWA)。我在此配置了app proxy,pre-authentication设置为AADinternal URL是我的基于java的Web应用程序URL。

另一方面,AAD连接器以联合身份安装为ADFS。

现在的流程是:当我点击User access URL(企业应用程序的URL)时,它会对域验证提出质疑,并且在成功验证后,它会重定向到我的内部部署AD表单。成功验证ADFS后,它会重定向到我的Web应用程序。

现在我收到的回复是SAML响应。

我的问题是如何使用java读取此SAML响应,AFA我发现ADAL是一种方法。 here是我找到的示例项目。

但是在我的案例中没有发现这个有用。是否有任何其他方式来阅读此响应或任何修改。

问题可能很广泛:那么同样的任何建议或参考链接?

更新:

我的申请没有直接收到SAML回复。通过app proxy收到的回复不是SAML。或者我们可以在应用代理发送的响应中添加一些自定义标头。请查看下面的图片以便更好地理解

SAML tracer: trace for login sequence

UPDATE2:

是否可以通过azure app proxy发送自定义标头?

目前正在接收标题

  1. 连接
  2. 授权谈判
  3. 曲奇饼
  4. 主办
  5. 其他像x-forwarded-by,语言,编码
azure-active-directory openid saml adfs adal
2个回答
1
投票

看起来您的设置可能没有问题,但目前Azure AD应用程序代理的限制是,它无法将SAML令牌传递给SSO的内部Web应用程序。

请查看下面的链接,看起来它是Azure AD团队的计划项目,您可以尝试通过Microsoft支持进行确认,并从中获取有关可能的解决方法的详细信息。

我希望这有帮助!

  1. 应用程序代理 - SAML作为SSO选项https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/33318022-app-proxy-saml-as-sso-option 在这里,他们提到工作从项目开始,甚至建议解决并分享联系信息以询问更多细节。 enter image description here
  2. 启用S​​AML令牌以通过Azure应用程序代理流向内部站点https://feedback.azure.com/forums/374982-azure-active-directory-application-requests/suggestions/19204666-enable-saml-tokens-to-flow-through-azure-applicati 这个问题本身更详细地解释了问题 enter image description here

更新:以下是我从Azure AD反馈团队获得的响应中的一篇文章

第1部分:在应用程序代理中配置应用程序

步骤1:添加新的企业应用程序,并选择“本地应用程序”选项。使用作为应用程序标识符的内部URL以及您希望用户在外部使用时使用的外部URL填写应用程序信息。确保选择包含可以访问应用程序的连接器的连接器组 - 如果您只按照第0部分中的步骤操作并且尚未创建新的连接器组,则正确的组为“默认”。

enter image description here

步骤2:通过“用户和组”菜单将用户分配到应用程序

enter image description here

第2部分:配置SAML应用程序

第1步:添加另一个应用程序,但这次选择非库应用程序

enter image description here

步骤2:由于用户是通过Application Proxy应用程序分配的,因此无需在此处分配。在属性菜单中,关闭“需要用户分配”字段。

步骤3:在相应的菜单中配置单点登录设置。选择“基于SAML的登录”。提供应用程序的应用程序标识符。将回复URL作为应用程序代理外部URL(在第1部分,步骤1中配置)。选择用户标识符的类型并添加令牌的签名证书。您的应用程序现在可以使用了。它可以通过Application Proxy外部URL访问,也可以通过访问面板访问。

enter image description here


0
投票

ADAL是用于OpenID Connect而非SAML的库。

看看Spring Security或OpenSAML的代码 - 包括开源代码和Java代码。

从本质上讲,它只是XML。

还有online tools会给你一些提示。

© www.soinside.com 2019 - 2024. All rights reserved.