C# 使用Azure AD注销SAML

C# 使用Azure AD注销SAML,c#,single-sign-on,saml,azure-ad-b2c,saml-2.0,C#,Single Sign On,Saml,Azure Ad B2c,Saml 2.0,我已经在Microsoft Azure中为SSO创建了一个企业应用程序。我已配置应用程序的标识、回复Url和注销Url。我的目标是使我的应用程序符合SAML 我能够使用回复Url中指定的函数对我的用户进行身份验证。函数被命中,参数SAMLResponse接收到一个base64编码的字符串,我可以使用该字符串对系统中的用户进行身份验证 类似地,当用户从Office365/AD a注销时,将调用配置应用程序时在注销Url中指定的注销函数。我在参数SAMLRequest中收到一个编码/加密字符串。我想

我已经在Microsoft Azure中为SSO创建了一个企业应用程序。我已配置应用程序的标识回复Url注销Url。我的目标是使我的应用程序符合SAML

我能够使用回复Url中指定的函数对我的用户进行身份验证。函数被命中,参数SAMLResponse接收到一个base64编码的字符串,我可以使用该字符串对系统中的用户进行身份验证


类似地,当用户从Office365/AD a注销时,将调用配置应用程序时在注销Url中指定的注销函数。我在参数SAMLRequest中收到一个编码/加密字符串。我想知道是否有任何方法可以解码该字符串,或者知道试图注销SSO的用户,以便我可以将该用户从我的系统中注销,并释放该用户使用的许可证。

SAML字符串是Base64编码和解压缩的。因此,如果做相反的操作,将得到SAMLRequest xml。SessionIndex可以通过与登录时收到的SessionIndex进行检查来识别用户

MemoryStream memStream = new MemoryStream(Convert.FromBase64String(SAMLRequest));
DeflateStream deflate = new DeflateStream(memStream, CompressionMode.Decompress);
string doc = new StreamReader(deflate, System.Text.Encoding.UTF8).ReadToEnd();

SAML字符串是Base64编码和压缩的。因此,如果做相反的操作,将得到SAMLRequest xml。SessionIndex可以通过与登录时收到的SessionIndex进行检查来识别用户

MemoryStream memStream = new MemoryStream(Convert.FromBase64String(SAMLRequest));
DeflateStream deflate = new DeflateStream(memStream, CompressionMode.Decompress);
string doc = new StreamReader(deflate, System.Text.Encoding.UTF8).ReadToEnd();