【问题标题】:What is the correct way to encode SAML request to the Azure AD endpoint?将 SAML 请求编码到 Azure AD 终结点的正确方法是什么?
【发布时间】:2018-10-25 21:52:07
【问题描述】:

我正在使用以下代码将 SAMLRequest 值编码到端点,即调用 https://login.microsoftonline.com/common/saml2?SAMLRequest=XYZ 时的 XYZ。

这是正确的编码方式吗?

    private static string DeflateEncode(string val)
    {
        var memoryStream = new MemoryStream();
        using (var writer = new StreamWriter(new DeflateStream(memoryStream, CompressionMode.Compress, true), new UTF8Encoding(false)))
        {
            writer.Write(val);
            writer.Close();

            return Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length, Base64FormattingOptions.None);
        }
    }

【问题讨论】:

    标签: azure azure-active-directory saml saml-2.0


    【解决方案1】:

    如果你只是想将字符串转换为base64编码的字符串,那么你可以使用以下方式:

    var encoded = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(val));
    Console.WriteLine(encoded);
    return encoded;
    

    【讨论】:

    • 如果您是 Microsoft 合作伙伴,我建议您访问 aka.ms/devchat 以获得有关 Azure 的个性化支持。它是免费的,而且是 24x5 的。
    【解决方案2】:

    是的,这对于 Http Redirect 绑定看起来是正确的。

    但除非你真的知道自己在做什么,否则不要自己做。发送 AuthnRequest 是简单的部分。正确验证收到的响应,包括防范 Xml 签名包装攻击是很困难的。使用现有库,有商业和开源库可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 2012-02-21
      • 2013-03-12
      相关资源
      最近更新 更多