Pergunta

É possível autenticar os usuários subdomínios quando a autenticação ocorre em um sub-domínio em vez do domínio pai?

Por exemplo:

usuário fizer logon no site1.parent.com, e então temos de enviá-los para reporting.parent.com.

Posso autenticar-los para o site de relatórios, embora o log-in ocorreu em um sub-domínio?

Até agora, todas as pesquisas que tenho feito tem registro de usuários no domínio pai em primeiro lugar e, em seguida, cada sub-domínio tem acesso ao cookie de autenticação.

Foi útil?

Solução

Você pode definir o cookie para ser o domínio pai em tempo de autenticação, mas você tem que configurá-lo explicitamente, ele será o padrão para o domínio completo que você está.

Uma vez que o cookie de autenticação está configurado corretamente para o domínio pai, em seguida, todos os sub-domínios deve ser capaz de lê-lo.

Outras dicas

Quando você autenticar o usuário, defina o domínio do cookie de autenticação para o domínio de segundo nível, ou seja, parent.com. Cada sub-domínio irá receber cookies do domínio pai, a pedido, de modo a autenticação sobre cada é possível desde que você terá um cookie de autenticação compartilhada de trabalhar.

código de autenticação:

System.Web.HttpCookie authcookie = System.Web.Security.FormsAuthentication.GetAuthCookie(UserName, False);
authcookie.Domain = "parent.com";
HttpResponse.AppendCookie(authcookie);
HttpResponse.Redirect(System.Web.Security.FormsAuthentication.GetRedirectUrl(UserName, 
                                                                       False));

Como uma nota lateral, eu achei que depois de usar o método de JRO que funcionou bem +1, o FormsAuthenication.SignOut () método não funcionar quando chamado a partir de um subdomínio diferente do www /. (Eu estou supondo porque a propriedade .Domain não corresponder) - Para contornar esta situação eu usei:

if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
            {
                HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
                myCookie.Domain = "parent.com";
                myCookie.Expires = DateTime.Now.AddDays(-1d);
                Response.Cookies.Add(myCookie);
            }

Além de definir um cookie para domínio pai também precisa ter certeza de que todos os sites (apps) tem mesmo validationKey e decryptionKey () para que todos reconhecem permissão de autenticação do outro e cookie. Muito bom artigo aqui http://www.codeproject.com/KB/aspnet/SingleSignon.aspx

Sim, com certeza. Você pode precisar rolar o seu próprio em algumas fases, mas deve ser factível.

Uma idéia:. Como você redirecioná-los através da fronteira, dar-lhes um tempo de passagem de token e, em seguida, dizer ao sub-domínio de recebimento esperar que eles (este utilizador, a partir deste IP, com este token)

A resposta de Jro funciona bem. Mas certifique-se de atualizar a autenticação setting "domain" formas webconfig , Caso contrário forma signout autenticação não funcionará corretamente. Aqui é a questão signout Vim através. Truque aqui é ter um '' como o prefixo como o domínio está definido para o cookie como ".parent.com" (use um inspector cookie).

<authentication mode="Forms">          
      <forms cookieless="UseCookies" defaultUrl="~/Default" loginUrl="~/user/signin" domain=".parent.com"  name="FormAuthentication" path="/"/>
    </authentication>

2 coisas a serem feitas:

  1. MachineKey deve ser o mesmo em todos web.config (domínio principal do domínio e sub (s))
  2. nome do domínio AuthenticationCookie deve ser o mesmo.

Siga o seguinte artigo para obter mais profundidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top