尝试通过设置 web.config 身份验证部分来使用 FormAuthentication,如下所示:
<authentication mode="Forms">
<forms name=".ASPXAUTH" requireSSL="true"
protection="All"
enableCrossAppRedirects="true" />
</authentication>
生成机器密钥。示例:生成 MachineKey 的最简单方法 - 提示和技巧:ASP.NET、IIS ...
当发布到其他应用程序时,身份验证票作为隐藏字段传递。从第一个应用程序读取帖子时,第二个应用程序将读取加密票证并对用户进行身份验证。这是传递该字段的页面示例:
.aspx:
<form id="form1" runat="server">
<div>
<p><asp:Button ID="btnTransfer" runat="server" Text="Go" PostBackUrl="http://otherapp/" /></p>
<input id="hdnStreetCred" runat="server" type="hidden" />
</div>
</form>
代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
FormsIdentity cIdentity = Page.User.Identity as FormsIdentity;
if (cIdentity != null)
{
this.hdnStreetCred.ID = FormsAuthentication.FormsCookieName;
this.hdnStreetCred.Value = FormsAuthentication.Encrypt(((FormsIdentity)User.Identity).Ticket);
}
}
另请参阅Wrox本书第 5 章中的跨应用程序表单身份验证部分。除了提供自制 SSO 解决方案外,它还推荐与上述类似的答案。