Eu tenho um sistema baseado em ASP.Net; cópias idênticas do site rodam em três servidores diferentes, todos Windows 2008R2 rodando IIS7.5. Cada site tem seu próprio banco de dados de autenticação, com seus próprios usuários, funções, perfis, etc.
Eu gostaria de mesclar esses bancos de dados, para que haja um único banco de dados de autenticação compartilhado pelos três servidores e, em seguida, os usuários possam fazer login em qualquer um dos três servidores.
O site principal tem de longe o maior conjunto de usuários; os outros dois sites têm apenas um punhado de usuários/perfis cada, portanto, é possível recriá-los manualmente, se necessário. No entanto, o que preciso fazer para garantir que o hash/salt da senha seja válido e utilizável em cada servidor?
MachineKey
É apenas um caso de definir s idênticos web.config
? Também preciso definir ApplicationId
s idênticos na aspnet_Applications
tabela?
Se você mesclar as duas tabelas de associação menores na maior, ao migrar as tabelas de associação para as tabelas maiores, poderá alterar o ApplicationID das novas linhas para que tenham o mesmo ApplicationID da primeira. Depois de fazer isso, você efetivamente terá 1 aplicativo grande (ger) de usuários que é compartilhado pelos 3 aplicativos. Já que você está usando hash, (presumo que seu web.config tenha validação=SHA1), você não precisa se preocupar com a chave da máquina, pois ela não é usada para validar logins - é para isso que serve o salt. A Machine Key é usada para criptografar coisas como Session, Form Data e ViewState. Tudo bem se as Chaves da máquina permanecerem diferentes para cada um dos aplicativos. (Se você estivesse balanceando a carga de um único aplicativo em vários servidores, precisaria que eles fossem iguais.)
Agora, para algumas ressalvas.