【问题标题】:Read SAML response received from azure active directory using java使用 java 读取从 azure Active Directory 收到的 SAML 响应
【发布时间】:2018-09-07 09:43:12
【问题描述】:

我是 azure Active Directory (AAD) 的新手,到目前为止,我已经在 azure AD 中创建了企业应用程序并设置了此应用程序,我为 Single sign-on option 选择了集成的 windows auth(IWA)。我已经在其中配置了应用代理,pre-authentication 设置为AADinternal URL 是我基于 Java 的 Web 应用程序 URL。

在另一侧,AAD 连接器与联合作为 ADFS 一起安装。

现在的流程是:当我点击User access URL(企业应用程序的 URL)时,它会挑战域验证,并在成功验证后重定向到我的本地 AD 表单。成功通过 ADFS 身份验证后,它会重定向到我的网络应用程序。

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

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

但在我的情况下没有发现这很有用。是否有任何其他方式来阅读此响应,或进行任何修改。

这个问题可能很广泛:那么有相同的建议或参考链接吗?

更新:

我的应用程序没有直接收到SAML 响应。通过应用代理收到的响应不是SAML。或者我们可以添加一些自定义标头作为应用代理发送的响应。请在下面找到图片以便更好地理解

更新2:

是否可以发送自定义标头作为 azure 应用代理发送的响应?

当前接收的标头是

  1. 连接
  2. 授权协商
  3. 饼干
  4. 主持人
  5. 其他如 x-forwarded-by、语言、编码

【问题讨论】:

    标签: azure-active-directory openid saml adfs adal


    【解决方案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

      在这里,他们提到该项目的工作正在开始,甚至建议解决问题并分享联系信息以询问更多详细信息。

    2. 使 SAML 令牌能够通过 Azure 应用程序代理流向内部站点 https://feedback.azure.com/forums/374982-azure-active-directory-application-requests/suggestions/19204666-enable-saml-tokens-to-flow-through-azure-applicati

      这篇文章更详细地解释了问题本身


    更新:这是我从 Azure AD 反馈团队收到的回复中的一篇文章

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

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

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

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

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

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

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

    【讨论】:

    • @Hitesh Ghuge,我能够联系 aad 反馈团队并从他们那里得到解决方法的回复。如果您认为这些链接与您遇到的问题相同,请告诉我。他们的回答有点详细,所以我只会在此时与您相关时分享。
    • 我已经在我的企业应用程序中配置了application proxy。所以在这种情况下我将无法配置SAML-based-sign-on。由于 Azure 团队目前不支持它。
    • 所以,正如上面我的问题中提到的,我在安装 AAD 连接器时配置了 Federation with ADFS ,它基本上为我执行 SAML。
    • 如果您分享从 Microsoft 团队收到的回复,将会非常有帮助。 :)
    • @hiteshghuge,我已经将 MS 团队的回复添加到我上面的答案中作为编辑,标题为“更新:这是我从 Azure AD 反馈团队获得的回复中的一篇文章”。如果您仍需要更多信息,我建议您尝试发送电子邮件至 aadapfeedback@microsoft.com。我的回答中的第一个 feedback.azure.com 链接中提到了这个地址。这些人非常乐于助人且反应迅速,因此请尝试一下。
    【解决方案2】:

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

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

    本质上,它只是 XML。

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

    【讨论】:

    • 问题是 SAML 响应发送到应用代理,应用代理重定向到我的应用程序。应用代理响应不是 SAML。
    • 是否有任何标准库可以像ADAL4j 在 OpenID 的情况下让我的生活变得轻松,或者我的配置有什么问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多