将SAML请求编码到Azure AD终结点的正确方法是什么?

时间:2018-10-25 21:52:08

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

我正在使用以下代码将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);
        }
    }

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

是的,对于Http重定向绑定来说看起来是正确的。

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