Как правильно закодировать запрос SAML в конечную точку Azure AD? - PullRequest
0 голосов
/ 26 октября 2018

Я использую следующий код для кодирования значения SAMLRequest для конечной точки, то есть XYZ при вызове https://login.microsoftonline.com/common/saml2?SAMLRequest=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 голосов
/ 27 октября 2018

Да, это выглядит правильно для привязки Http Redirect.

Но не делайте этого самостоятельно, если вы действительно не знаете, что делаете.Отправка AuthnRequest является простой частью.Корректная проверка полученного ответа, включая защиту от атак с использованием подписи Xml, является сложной задачей.Используйте существующую библиотеку, доступны как коммерческие, так и библиотеки с открытым исходным кодом.

0 голосов
/ 26 октября 2018

Если вы просто хотите преобразовать строку в строку в кодировке base64, вы можете использовать следующий способ:

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