FormsAuthentication.SetAuthCookie通过服务(或其他远程方式)

时间:2009-11-12 20:28:17

标签: c# forms-authentication

我们目前正在将部分Intranet应用程序迁移到MojoPortal(一个开源的cms应用程序)。 MP默认使用FormsAuth,我们将其设置为针对当前的Active Directory存储进行身份验证。

所有这一切,我们希望自动登录用户从当前系统到新系统,以创建无缝体验。新系统(mojo)驻留在与当前系统不同的服务器上。两者都位于相同的“company.com”域下,具有不同的子域。

Mojo,通过用户通过mojo界面登录时创建的FormsAuthentication cookie检查身份验证。我们希望远程重新创建此功能。我意识到FormsAuth基于MachineKey并且存在于单个IIS Web实例中,但我很好奇社区可能有的任何想法。

目前我们提出的“最佳”猜测是:

创建一个位于mojo站点下的虚拟目录中的WCF Web服务,接受用户名/密码并创建cookie。这是未经测试的,因为我们不确定这是否会实际影响客户端。

将用户重定向到mojo下的中间页面,该页面接受用户名/密码并创建cookie,然后再将用户重定向到所需的mojo页面。

这确实使用MojoPortal作为提供程序,但真正的问题是如何远程创建FormsAuthentication cookie。

其他背景资料:

当前系统已针对同一AD存储进行身份验证,因此无需担心为不存在的用户创建Cookie。两台服务器都位于同一个AD域中(它们在物理上彼此相邻)。我们可以使用当前系统的源代码,也可以对其进行修改。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您试图在遗留系统和魔力之间进行单点登录?我过去做过类似的事。我们的遗留系统会创建一个身份验证令牌并将其传递给第二个系统。然后将Web服务调用返回到遗留系统以验证令牌(您将需要添加一些有关令牌真实性的规则。例如:一次使用,超时等等。)。如果遗留系统验证令牌,则设置cookie。

FormsAuthentication.SetAuthCookie(,true)

从那里重定向回你的mojo主页。