Se você estiver navegando entre subdomínios no mesmo domínio (como www.YOURDOMAIN.com para app.YOURDOMAIN.com), você poderá obter os resultados desejados com um nível de domínio cookie de autenticação do asp.net usando SetAuthCookie
e algumas alterações do web.config.
Este artigo foi útil quando eu configurei uma configuração semelhante Single Sign-on no ASP.NET e em outras plataformas - CodeProject
Passo 1 - Definir Cookie
Embora o aplicativo do SharePoint use a autenticação do Windows, você ainda pode chamar esse método para criar um cookie de autenticação do .NET para seu domínio atual e autenticar automaticamente o usuário quando ele navegar para o aplicativo de autenticação de formulários. Assim, uma vez que seu usuário se conecte ao seu site do SharePoint, aplique o cookie (possivelmente por meio de uma parte da web personalizada ou de um code-behind de página / masterpage) da seguinte forma:
// this will create a persistant cookie
// (meaning closing/re-opening the browser won't remove the cookie)
FormsAuthentication.SetAuthCookie(
SPContext.Current.Web.CurrentUser.LoginName,
true);
Etapa 2 - definir valores <machineKey>
idênticos
No web.config de ambos os aplicativos, você precisará definir valores idênticos para o seu <machineKey>
(dentro de <system.web>
). Tais como:
<machineKey
validation="SHA1"
validationKey="[128 character random string]"
decryption="AES"
decryptionKey="[64 character random string]" />
Etapa 3 - Defina <forms>
valores
Você também desejará definir valores na <forms>
para que, quando o cookie de autenticação for criado, ele use suas configurações para domain
, cookieless
no seu SharePoint web.config aplique o seguinte
<authentication mode="Windows">
<forms domain="YOURDOMAIN.COM"
cookieless="UseCookies"
enableCrossAppRedirects="true" />
</authentication>
em seu aplicativo forms-auth os define no seu web.config junto com o que você já tem (provavelmente pelo menos os valores da propriedade loginUrl
e timeout
estão definidos também)
<authentication mode="Forms">
<forms domain="YOURDOMAIN.COM"
cookieless="UseCookies"
enableCrossAppRedirects="true" />
</authentication>