使用 Azure AD 在两者之间登录时,如何将查询字符串参数或 POST 数据传递到重定向站点?

Posted

技术标签:

【中文标题】使用 Azure AD 在两者之间登录时,如何将查询字符串参数或 POST 数据传递到重定向站点?【英文标题】:How to pass query string params or POST data to a redirected site when using Azure AD for login in between? 【发布时间】:2017-06-19 04:12:28 【问题描述】:

如果我使用一些查询字符串参数或表单 POST 数据从一个站点重定向到另一个站点。但在重定向时,我需要用户通过 Azure AD 身份验证 (https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-how-to-configure-active-directory-authentication) 登录。 通过 Azure AD 成功登录后,如何启用查询字符串参数和 POST 数据以传递到目标站点。 (Azure AD 身份验证后的重定向是否会删除查询字符串参数和表单发布数据?)

【问题讨论】:

【参考方案1】:

您可以使用登录 url 中的“状态”值来存储这些类型的属性。以下是登录网址的示例:

// Line breaks for legibility only

https://login.microsoftonline.com/tenant/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fmail.read
&state=12345

阅读更多here:

状态

请求中包含的值也将在令牌响应中返回。它可以是您想要的任何内容的字符串。随机生成的唯一值通常用于防止跨站点请求伪造攻击。该状态还用于对发生身份验证请求之前用户在应用中的状态信息进行编码,例如他们所在的页面或视图。

如果这有帮助,请告诉我!

【讨论】:

Azure AD 是否会在成功重定向后清除表单发布数据? 我有两个网站,一个是内部网站,另一个托管为 Azure 网站(两者都利用 AAD 进行 SSO)内部网站使用表单发布数据重定向到 Azure 网站。由于 Azure 网站经过 AAD 身份验证,它会重定向到 login.microsoftonline.com,获取令牌并静默返回 Azure 网站。在Auth的过程中,我最初提交的表单post数据丢失了。这是预期的行为吗? 我在这里不是 100% 确定,但我的猜测是,如果它没有存储在状态变量中,任何数据在重定向到登录端点和从登录端点重定向时都会丢失。

以上是关于使用 Azure AD 在两者之间登录时,如何将查询字符串参数或 POST 数据传递到重定向站点?的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure AD B2C 中,我们如何在注册和登录时自动链接帐户?用户应该只有一个帐户

如何在 Flutter 移动应用中将 Azure AD 用户登录到 Firebase?

如何在 Azure Ad 中实现代流?

Windows Azure AD 在单一目录下,使用Azure AD单点登录

使用 JWT 令牌保护 asp.net 核心 Web api 时如何从 Azure AD 获取用户

如何配置 Azure AD 访问令牌的过期时间(使用 ADAL)?