Não sei qual é o método atual de "melhor prática" de fazer autorização em um aplicativo baseado em .NET. Aqui está algo que eu fiz muitos anos atrás em um aplicativo baseado na web que escrevi para descarregar toda a funcionalidade de autorização para o próprio sistema operacional. (Isso provavelmente sairá como um hack desonesto escrito por alguém que é primeiro um administrador de sistemas e um segundo desenvolvedor).
-
Eu enumerei todas as permissões no aplicativo e criei os arquivos em uma hierarquia de diretórios para torná-los seletivamente disponíveis para os usuários designados à (s) função (ões) apropriada (s). (Os arquivos não contêm nada - como você verá abaixo, apenas verifiquei se o usuário poderia ler o arquivo.)
-
Criaram grupos do Active Directory que identificaram as funções dos usuários do aplicativo.
-
Permissão atribuída para ler os arquivos que criei na etapa anterior aos grupos do Active Directory.
Quando o usuário autenticado no aplicativo (baseado na web) foi feita uma tentativa de acessar cada um dos arquivos de "permissão". Com base no que foi bem-sucedido / falhou, o aplicativo pôde verificar o "papel" atribuído pelo usuário.
Para o departamento de TI do Cliente, alterar a permissão para o aplicativo era uma questão de alterar as ACLs nos arquivos de "permissão" (se eles precisassem fazer mudanças radicais) ou, mais frequentemente, apenas alterar as associações de grupos de usuários.
Gostei desse método porque ele lida com todos os "casos de borda" muito bem - associações de grupos aninhadas, entidades de segurança de florestas estrangeiras, etc. Também é legal porque, se esses arquivos de permissão foram realocados para uma máquina Windows Server 2012 , meu aplicativo de repente ganha a nova funcionalidade do Dynamic Access Control "de graça".