跨多个应用程序(子域)的asp Forms身份验证

时间:2013-06-05 21:11:21

标签: c# asp.net-mvc forms-authentication subdomain

我的IIS服务器上运行了4个应用程序。其中一个应用程序是我的“主站点”,此图中显示了3个子应用程序 - enter image description here

所有这些网站都位于同一个网域:mainSite.mydomain.com,app1.mydomain.com等。

我希望用户能够登录到APP 1,APP 2或APP 3并登录MAIN SITE,但是如果用户登录到APP 1则无法访问APP 2或APP3。所以基本上用户只能使用相同的登录访问其中一个应用程序和主站点。

我目前使用以下代码,但这允许用户使用相同的登录访问所有应用程序:

<forms name=".ASPXAUTH" loginUrl="Login/" protection="Validation" timeout="120" path="/" domain=".mydomain.com"/>

这是我用来创建身份验证票证的代码:

        var ticket = new FormsAuthenticationTicket(
            1, user.EmailAddress,
            now,
            now.Add(mExpirationTimeSpan),
            createPersistentCookie,
            user.EmailAddress,
            FormsAuthentication.FormsCookiePath);

        var encryptedTicket = FormsAuthentication.Encrypt(ticket);

        var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
        cookie.HttpOnly = true;
        if (ticket.IsPersistent)
        {
            cookie.Expires = ticket.Expiration;
        }
        cookie.Secure = FormsAuthentication.RequireSSL;
        cookie.Path = FormsAuthentication.FormsCookiePath;
        if (FormsAuthentication.CookieDomain != null)
        {
            cookie.Domain = FormsAuthentication.CookieDomain;
        }

        mHttpContext.Response.Cookies.Add(cookie);

如何确定用户应该访问哪些应用程序并限制用户访问其他应用程序?我目前唯一能想到的是以某种方式添加有关使用哪个应用程序到cookie中的信息,但是我能够解密这些信息吗?

0 个答案:

没有答案