Aplicativo de vários inquilinos do ASP.NET com funções específicas do inquilino

Temos um aplicativo ASP.NET multilocatário. Até agora, os inquilinos foram isolados um do outro. No entanto, agora temos agências que gerenciam vários inquilinos e desejam gerenciar todos os inquilinos com uma única conta de usuário. Estou tentando descobrir a melhor maneira de conseguir isso, espero que sem muita mudança nas tecnologias existentes que estamos usando.

Detalhes técnicos relevantes:

AspNetSqlMembershipProvider para associação e funçõesC # 4.0 (em breve, 4.5)Autenticação de FormuláriosPáginas aspx e MVC (v3)Suponha que 100 ou mais inquilinos, portanto, qualquer solução precisa oferecer suporte a esse

Eu acredito que os requisitos são muito semelhantes ao modelo de segurança para o SQL Server. Temos um conjunto de logins que representam todos os usuários que podem fazer login no sistema. Os usuários devem poder atribuir funções a um ou mais bancos de dados (inquilinos). Exemplo: O usuário Bob tem função de administrador na empresa A, mas apenas função de usuário na empresa B. Também temos uma função "sysadmin" para os funcionários da minha empresa, o que nos permite acessar qualquer inquilino, bem como privilégios administrativos especializados, como criar / excluir inquilinos , etc.

Eu fiz muita pesquisa em várias bibliotecas, estruturas, etc., e não encontrei nenhuma evidência convincente de que alguma outra biblioteca ou estrutura seja melhor do que a que temos atualmente. No momento, estou pensando em descobrir como fazer com que o provedor de associação Sql faça o que eu quero, a menos que alguém possa me indicar uma direção melhor. Também não tenho certeza de que conheço os melhores termos para pesquisar nisso.

Eu tenho duas opções que estou considerando:

Adicione apenas algumas funções ao provedor de associação e lide com todas as perguntas de "o usuário atual tem essa função neste inquilino" fora do provedor de associação. O provedor de associação seria usado para lidar com o acesso básico ao sistema.Adicione funções específicas de inquilino ao provedor de associação. Teríamos (número de funções) x (número de inquilinos) funções totais no sistema. Cada novo inquilino adicionaria outro conjunto de funções ao sistema, por exemplo "Inquilino A: Admin", "Inquilino A: Usuário" etc. Seriam necessárias algumas tabelas adicionais para gerenciar as relações, bem como provavelmente algum código personalizado para garantir que o acesso solicite a função específica do inquilino correta do provedor de associação.

Essas opções são boas? Ou devo procurar outro suporte para isso?

questionAnswers(2)

yourAnswerToTheQuestion