单一登录使用Guid

时间:2010-08-23 19:21:34

标签: c# asp.net guid single-sign-on

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

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

1 个答案:

答案 0 :(得分:2)

您应该能够使用cookie并从同一域下运行的任何应用程序访问它。如果其他Web应用程序位于子域中,则需要设置Cookie的Domain,如:

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

如果站点存在于Intranet中并且用户都使用唯一的用户帐户登录到Windows,则可以打开Windows身份验证并从其Web请求中读取其Windows用户名以确定用户。

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

如果你想让它变得更复杂(可能存在仅仅依赖于cookie的安全问题),你可以将GUID存储在数据库中并让每个页面都查看以确保它们传入的GUID已验证。从这里开始,您想要管理在数据库中验证的GUID取决于您(比较时间戳等)。

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