【问题标题】:Pass custom parameters to IdP via query string通过查询字符串将自定义参数传递给 IdP
【发布时间】:2026-01-17 23:30:02
【问题描述】:

有没有办法将额外的自定义参数传递给通过 Windows Azure ACS 公开的 IdP。

想通过查询字符串执行一些额外的操作吗?

【问题讨论】:

    标签: security azure saml


    【解决方案1】:

    是的。当您调用 Home Realm Discovery URL 时,您可以传递参数“context”。然后,它返回的 IDP url 将包含上下文。

    所以 HRD URL 是这样的

    https://mynamespace.accesscontrol.windows.net/v2/metadata/identityProviders.js?   
       realm=myrealm&protocol=wsfederation&version=1.0&context=foo
    

    当来自 ACS 的帖子返回到我们的依赖方应用程序时,我们在一些具有声明感知能力的 Web 应用程序中使用它来“记住”某些上下文。有关 HRD URL 的更多信息,请查看“Home Realm Discovery Metadata Feed”部分中的here

    哦,当您在 RP 应用程序中从 ACS 取回帖子时,这里有一个 sn-p 提取上下文:

    if (Request.Form["wresult"] != null)
    {
        var message = WSFederationMessage.CreateFromNameValueCollection(
            FederationMessage.GetBaseUrl(ControllerContext.HttpContext.Request.Url),      
            ControllerContext.HttpContext.Request.Form) as SignInResponseMessage;
        if (null != message && !string.IsNullOrWhiteSpace(message.Context))
        {
            ....
    

    【讨论】: