繁体   English   中英

无法从使用 Azure SAML SSO 配置的本地应用程序中的 C# 中的 Request.Params 获取 SAMLResponse

[英]Unable to get SAMLResponse from Request.Params in C# from onpremise app configured with Azure SAML SSO

我已经使用Azure App ProxySAML SSO配置了Onpremise MVC 应用程序

当我浏览以下内部部署应用程序用户访问 url 时,我能够重定向到内部部署应用程序。

https://myapps.microsoft.com/signin/...

但是Request.Params.Keys 中缺少SAMLResponse

我能够在Fiddler 中获得请求的SAMLResponse ,当我解码它时,我得到了所有需要登录的用户相关声明。

但是从 C# 中,我无法从Request.Params获得SAMLResponse

我正在使用下面的代码来阅读声明。

  foreach (string s in Request.Params.Keys)
    {
        if (s.ToString() == "SAMLResponse") // SAMLResponse is missing from Request.Params.Keys, but from Fiddler, I' able to view SAMLResponse
        {
            rawSamlData = Request.Params[s];
            break;
        }
    }

    if (rawSamlData != null)
    {
        byte[] samlData = Convert.FromBase64String(rawSamlData);

        // read back into a UTF string  
        string samlAssertion = Encoding.UTF8.GetString(samlData);

        XmlDocument doc = new XmlDocument();
        XmlNamespaceManager xMan = new XmlNamespaceManager(doc.NameTable);
        xMan.AddNamespace("saml2p", "urn:oasis:names:tc:SAML:2.0:protocol");
        xMan.AddNamespace("saml2", "urn:oasis:names:tc:SAML:2.0:assertion");
        xMan.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#");

        doc.LoadXml(Encoding.UTF8.GetString(samlData));
        XmlNode xNode = doc.SelectSingleNode("/saml2p:Response/saml2:Assertion/saml2:AttributeStatement/saml2:Attribute[@Name='http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress']", xMan);

        string NewEmailAddressCliams = null;
        foreach (XmlNode x in xNode)
        {
            NewEmailAddressCliams += x.InnerText; // Email address returned from claim.
        }              
    }

如果我在Fiddler 中获得SAMLResponse ,那么我应该使用Request.Params从 C# 获得SAMLResponse ,但它没有发生。

请帮我解决这个问题。

从评论中移动答案,

Request.Params是已包含您的 SAML 信息的键/值对(集合)的组合。您需要遍历它以获取确切数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM