我认为您根本不想在两个网站之间共享会话信息。根据我从评论中收集到的信息,您真正想做的是让用户在一个网站上进行身份验证(给您一个经过验证的用户名和密码),然后将该“登录”状态转移到另一个网站'不为自己处理身份验证。
您所描述的是委托身份验证模型。
在此模型中,您的应用程序将身份验证移交给它信任的其他系统,以提供有关用户的信息。
有两个众所周知的协议可以提供这种机制:
OpenID
这旨在方便用户使用自己的身份提供者(Google、Facebook、Microsoft 帐户)登录。如果您正在运行面向公众的网站,这是一个非常好的选择,因为大多数用户已经拥有可以登录的帐户。
WS-Federation
这旨在帮助用户使用由已知可信方(例如合作伙伴组织)管理的身份提供者登录。
从版本 4.5 开始,.NET Framework 通过Windows Identity Foundation组件内置了对 WS-Federation 的支持(并且还可以单独下载早期版本)。这会自动将您的身份验证委托给身份提供者的任务。
如果您想创建自己的身份提供程序,它还提供组件供您编写自己的身份提供程序,但您不必这样做;您可以找到各种现有的实现来为您执行这项工作。
您尝试解决的问题是一个非常困难的问题,尤其是尝试使其足够安全以使其可靠。好消息是,比你或我更聪明的人已经花了数年时间研究出非常聪明的方法来做到这一点。您应该使用他们所做的事情,而不是试图拼凑一些超出 Session 状态的东西。
从长远来看,最好让更聪明的人为你做艰苦的工作。