我有几个网站 A、B、C ..... 网站 A:是一个认证网站,取决于用户名、密码和一个额外的参数;网站 A 将成功的用户登录重定向到网站 B。当用户登录时,我在网站 A 中获得了一个派生自 System.IdentityModel.Tokens.SecurityToken 的令牌。我的第一种方法是尝试通过 POST 请求将该令牌传递给另一个网站,但由于令牌太大而没有成功。首先我认为它是可序列化的,但不是:GenericXmlSecurityToken 可以使用 ToTokenXmlString() 转换为 XML。这是Thinktecture.IdentityModel.Extensions上的一个扩展方法,下面我附上类的描述
public static class SecurityTokensExtensions
{
public static ClaimsPrincipal ToClaimsPrincipal(this SecurityToken token, SecurityTokenHandlerCollection handler);
public static ClaimsPrincipal ToClaimsPrincipal(this SecurityToken token, X509Certificate2 signingCertificate);
public static ClaimsPrincipal ToClaimsPrincipal(this SecurityToken token, X509Certificate2 signingCertificate, string audienceUri);
public static SecurityToken ToSecurityToken(this GenericXmlSecurityToken token);
public static SecurityToken ToSecurityToken(this GenericXmlSecurityToken token, SecurityTokenHandlerCollection handler);
public static SecurityToken ToSecurityToken(this GenericXmlSecurityToken token, X509Certificate2 decryptionCertificate);
public static string ToTokenXmlString(this GenericXmlSecurityToken token);
public static string ToTokenXmlString(this SecurityToken token);
public static string ToTokenXmlString(this SecurityToken token, SecurityTokenHandlerCollection handler);
}
如您所见,我们可以将 XML 转换为字符串,但上述方法中没有一个采用该字符串并返回一个 SecurityToken,而是采用 GenericXmlSecurityToken。该类的构造函数在这里并且依赖于多个参数。
问题:
- 我是否需要在我的 webconfigs 中添加一些东西才能在
没有 POST 的情况下实现这一点? - 我可以序列化 SecurityToken 并将其发布到网站 B 并使用所有原始值再次反序列化它(这是这种情况下的方法)。