2010-08-23 383 views
2

如何使用Guid在同一个域上实现单点登录?我不能使用会话,因为不同的网络应用程序会在新窗口中打开,从而失去会话。使用Guid的单点登录

使用的技术:ASP.net 3.5,MVC2架构,C#。

+0

是否必须是GUID?或者您是否只需要Active Directory来验证/传递用户凭据到您的ASP.NET网站? – Gary 2010-08-23 19:46:16

+0

我宁愿它是一个GUID,因为我打算使用该值和用户ID来验证用户。 – user428747 2010-08-23 20:49:02

+0

请参阅:http://stackoverflow.com/questions/315403/getting-authenticate-ad-users-objectguid-from-asp-net – Gary 2010-08-23 21:06:03

回答

2

您应该可以使用cookie并通过任何应用程序在同一个域下运行来访问它。如果其他Web应用程序坐在一个子域,你需要设置的Domain饼干,如:

Response.Cookies("CookieName").Domain = ".mydomain.com" 

如果在内部网中存在的网站和用户都登录到Windows使用唯一的用户帐户,您可以打开Windows身份验证并从其Web请求中读取其Windows用户名以确定用户。

编辑详细说明: 让每个站点读取cookie。您可以根据是否存在cookie来确定用户是否已登录,可以通过设置cookie过期来进行管理。

如果您想要使这更复杂(可能只依赖于cookie的安全问题),您可以将GUID存储在数据库中,并让每个页面查看以确保它们传递的GUID在有效。从这里,然而你想管理在数据库中验证的GUID是由你决定的(比较时间戳等)。

您可能希望将其他信息存储在Cookie中以用于验证。例如,您可以生成一个随机字符串并将其与GUID一起存储在数据库中。对该字符串执行单向加密,并在初始保存时将其存储在Cookie中。这样,您可以在检查cookie是否有效时比较该值。

+0

谢谢你有帮助... – user428747 2010-08-24 15:35:14

+0

谢谢你们。我使用system.guid为每个登录用户生成一个guid值并将其保存到数据库中。这是我登录用户的唯一标识符,用于执行签名登录。 – user428747 2010-09-13 15:24:23

+0

我正尝试在webapp上创建一个单一的标志,以便使用他们自己的数据库访问不同的网站。我怎样才能做到这一点。 – user428747 2010-10-07 18:34:35