使用 java 读取从 Azure 活动目录收到的 SAML 响应
Read SAML response received from azure active directory using java
我是 azure 活动目录 (AAD) 的新手,到目前为止,我已经在 azure AD 中创建了企业应用程序,并且此应用程序的设置我已经为 Single sign-on option
选择了集成 windows auth(IWA) .我已经在此配置了应用程序代理,pre-authentication
设置为 AAD
,internal URL
是我基于 java 的 Web 应用程序 URL.
在另一侧,AAD 连接器作为 ADFS 与联邦一起安装。
现在的流程是:当我点击 User access URL
(URL 用于企业应用程序)时,它会挑战域验证,验证成功后它会重定向到我的 on-premises AD 表单。成功通过 ADFS 身份验证后,它会重定向到我的 Web 应用程序。
现在我收到的响应是 SAML 响应。
我的问题是如何使用 java 读取此 SAML 响应,我发现 AFA 是 ADAL 是一种方法。 here 是我找到的示例项目。
但我发现这对我没有用。是否有任何其他方式来阅读此回复,或进行任何修改。
问题可能很广泛:那么有任何建议或参考 link 吗?
更新:
我的应用程序没有直接收到 SAML
响应。通过应用程序代理收到的响应不是 SAML
。或者我们可以添加一些自定义 headers 作为应用代理发送的响应。请在下面找到图片以便更好地理解
更新2:
是否可以发送自定义 header 作为 azure 应用程序代理发送的响应?
目前收到 header 是
- 连接
- 授权协商
- cookie
- 主机
- 其他如x-forwarded-by、语言、编码
ADAL 是用于 OpenID Connect 而不是 SAML 的库。
查看 Spring Security 或 OpenSAML 的代码 - 都是开源的 Java。
本质上,它只是 XML。
还有online tools会给你一些提示。
看起来你的设置可能没有问题,但目前 Azure AD 应用程序代理的一个限制是它无法将 SAML 令牌传递到 SSO 的内部 Web 应用程序。
请查看下面的链接,这似乎是 Azure AD 团队的计划项目,您可以尝试与 Microsoft 支持人员确认这一点,并从他们那里获取有关可能解决方法的详细信息。
希望对您有所帮助!
应用程序代理 - SAML 作为 SSO 选项
https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/33318022-app-proxy-saml-as-sso-option
他们在这里提到该项目的工作已经开始,甚至建议解决并分享联系信息以询问更多详细信息。
启用 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 部分:在应用程序代理中配置应用程序
第一步:添加一个新的Enterprise Application,并选择“on-premises application”选项。使用作为应用程序标识符的内部 URL 和您希望用户在外部使用的外部 URL 填写应用程序信息。确保您 select 包含有权访问应用程序的连接器的连接器组 – 如果您只遵循第 0 部分中的步骤并且没有创建新的连接器组,则正确的组是“默认”。
第 2 步:通过“用户和组”菜单将用户分配给应用程序
第 2 部分:配置 SAML 应用程序
第 1 步:添加另一个应用程序,但这次选择非图库应用程序
第2步:由于用户是通过Application Proxy应用分配的,所以这里不需要分配。在属性菜单中,关闭需要用户分配字段。
第 3 步:在相应菜单中配置单点登录设置。选择“基于 SAML 的登录”。提供您的应用程序的应用程序标识符。将回复 URL 作为应用程序代理外部 URL(在第 1 部分的第 1 步中配置)。选择用户标识符的类型并为令牌添加签名证书。
您的应用程序现在可以使用了。它可以通过外部应用程序代理 URL 或通过访问面板访问。
我是 azure 活动目录 (AAD) 的新手,到目前为止,我已经在 azure AD 中创建了企业应用程序,并且此应用程序的设置我已经为 Single sign-on option
选择了集成 windows auth(IWA) .我已经在此配置了应用程序代理,pre-authentication
设置为 AAD
,internal URL
是我基于 java 的 Web 应用程序 URL.
在另一侧,AAD 连接器作为 ADFS 与联邦一起安装。
现在的流程是:当我点击 User access URL
(URL 用于企业应用程序)时,它会挑战域验证,验证成功后它会重定向到我的 on-premises AD 表单。成功通过 ADFS 身份验证后,它会重定向到我的 Web 应用程序。
现在我收到的响应是 SAML 响应。
我的问题是如何使用 java 读取此 SAML 响应,我发现 AFA 是 ADAL 是一种方法。 here 是我找到的示例项目。
但我发现这对我没有用。是否有任何其他方式来阅读此回复,或进行任何修改。
问题可能很广泛:那么有任何建议或参考 link 吗?
更新:
我的应用程序没有直接收到 SAML
响应。通过应用程序代理收到的响应不是 SAML
。或者我们可以添加一些自定义 headers 作为应用代理发送的响应。请在下面找到图片以便更好地理解
更新2:
是否可以发送自定义 header 作为 azure 应用程序代理发送的响应?
目前收到 header 是
- 连接
- 授权协商
- cookie
- 主机
- 其他如x-forwarded-by、语言、编码
ADAL 是用于 OpenID Connect 而不是 SAML 的库。
查看 Spring Security 或 OpenSAML 的代码 - 都是开源的 Java。
本质上,它只是 XML。
还有online tools会给你一些提示。
看起来你的设置可能没有问题,但目前 Azure AD 应用程序代理的一个限制是它无法将 SAML 令牌传递到 SSO 的内部 Web 应用程序。
请查看下面的链接,这似乎是 Azure AD 团队的计划项目,您可以尝试与 Microsoft 支持人员确认这一点,并从他们那里获取有关可能解决方法的详细信息。
希望对您有所帮助!
应用程序代理 - SAML 作为 SSO 选项 https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/33318022-app-proxy-saml-as-sso-option
他们在这里提到该项目的工作已经开始,甚至建议解决并分享联系信息以询问更多详细信息。
启用 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 部分:在应用程序代理中配置应用程序
第一步:添加一个新的Enterprise Application,并选择“on-premises application”选项。使用作为应用程序标识符的内部 URL 和您希望用户在外部使用的外部 URL 填写应用程序信息。确保您 select 包含有权访问应用程序的连接器的连接器组 – 如果您只遵循第 0 部分中的步骤并且没有创建新的连接器组,则正确的组是“默认”。
第 2 步:通过“用户和组”菜单将用户分配给应用程序
第 2 部分:配置 SAML 应用程序
第 1 步:添加另一个应用程序,但这次选择非图库应用程序
第2步:由于用户是通过Application Proxy应用分配的,所以这里不需要分配。在属性菜单中,关闭需要用户分配字段。
第 3 步:在相应菜单中配置单点登录设置。选择“基于 SAML 的登录”。提供您的应用程序的应用程序标识符。将回复 URL 作为应用程序代理外部 URL(在第 1 部分的第 1 步中配置)。选择用户标识符的类型并为令牌添加签名证书。 您的应用程序现在可以使用了。它可以通过外部应用程序代理 URL 或通过访问面板访问。