我正在使用以下代码将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);
}
}
答案 0 :(得分:0)
如果只想将字符串转换为base64编码的字符串,则可以使用以下方式:
var encoded = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(val));
Console.WriteLine(encoded);
return encoded;
答案 1 :(得分:0)
是的,对于Http重定向绑定来说看起来是正确的。
但是除非您真的知道自己在做什么,否则请不要自己做。发送AuthnRequest是简单的部分。正确验证收到的响应非常困难,包括防范Xml签名包装攻击。使用现有的库,既有商业库又有开源库。