Direitos do usuário do Active Directory

2

Atualmente estou trabalhando em uma solução de site ASP MVC que recuperei de um predecessor e tive que criar uma máquina de diretório ativo para suportar a implementação de login usando-a.

Após o primeiro login de um usuário, solicitamos que ele defina sua senha e também atualizamos sua descrição (que contém um estado de conta genérico usado em uma ferramenta de busca).

Meu problema é o seguinte:

Eu posso alterar a senha do usuário usando essas linhas de código (a entrada é a Entrada AD do usuário):

entry.Invoke("ChangePassword", new object[] { oldpassword, newPassword });
entry.CommitChanges();

Mas algumas linhas depois, uma atualização em sua descrição falha:

entry.InvokeSet("description", new object[] { UserPasswordStatus.PasswordChanged.ToString() });
entry.CommitChanges();

Resultando em um "System.UnauthorizedAccessException: erro de acesso geral negado".

Quando eu vou para o AD e altero a segurança do usuário para controle total sobre ele mesmo (dado na referência "SELF"), essas mesmas linhas vão bem.

Minha pergunta aqui é: o que preciso precisamente mudar para permitir que um usuário altere sua descrição? Obviamente, gostaria que fosse genérico e aplicado por padrão em todos os meus usuários.

Como você pode perceber, eu sou um desenvolvedor e não estou muito acostumado com a administração do servidor, por isso tente levar isso em conta:)

    
por KiTe 04.11.2014 / 14:12

2 respostas

1

Eu definitivamente aconselharia não dar a um usuário do Active Directory controle total sobre sua própria conta, mesmo que por um segundo. Mesmo por um milissegundo. Um dia, um auditor de segurança vai descobrir e se apegar a esse fato e continuar a nublar sua mente com medo e dúvida e, basicamente, apenas fazer você odiar a vida em geral.

Eu nem gosto mesmo da ideia de dar a um usuário a capacidade de modificar sua própria descrição, já que muitos administradores usam esse campo de descrição para seus próprios propósitos e não querem que os usuários se envolvam com isso. seus próprios atributos e colocando frases "espirituosas" em suas descrições e coisas típicas como essa, que os usuários fazem.

Mas enfim, considere isso ...

As contas de usuário herdam permissões herdáveis da OU (Organization Unit) em que residem. Portanto, se todos os usuários do aplicativo residirem em uma UO específica, você poderá modificar a ACL nessa UO para incluir SELF, Allow, Write Description , para que todos os usuários criados nessa UO herdem a mesma permissão. Isso pode realmente aparecer como "Escrever informações gerais" ou "Gravar informações públicas", pois o atributo "description" é realmente um membro de uma processo de propriedade . O grande resultado dessa abordagem é que você só precisa fazer a modificação da ACL uma vez, em vez de ajustar dinamicamente as ACLs em seu código sempre que um usuário fizer login no aplicativo da Web.

Boa sorte e cuidado com AdminSDHolder !

    
por 04.11.2014 / 18:02
0

Por padrão, a identidade SELF possui permissão de gravação para várias propriedades. Você pode estender isso delegando permissão de gravação à propriedade Descrição no nível do domínio, mas uma abordagem melhor pode ser executar o comando no contexto de uma conta de serviço que tenha permissão para modificar as contas, em vez de representar o usuário.

    
por 04.11.2014 / 18:23