Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função DsWriteAccountSpn grava uma matriz de SPNs (nomes de entidade de serviço) no atributo servicePrincipalName de um objeto de conta de usuário ou computador especificado no Active Directory Domain Services. A função pode registrar ou cancelar o registro dos SPNs.
Sintaxe
NTDSAPI DWORD DsWriteAccountSpnW(
[in] HANDLE hDS,
[in] DS_SPN_WRITE_OP Operation,
[in] LPCWSTR pszAccount,
[in] DWORD cSpn,
[in] LPCWSTR *rpszSpn
);
Parâmetros
[in] hDS
Contém um identificador de serviço de diretório obtido da função DSBind ou DSBindWithCred .
[in] Operation
Contém um dos valores de DS_SPN_WRITE_OP que especifica a operação que DsWriteAccountSpn executará.
[in] pszAccount
Ponteiro para uma cadeia de caracteres terminada em nulo constante que especifica o nome diferenciado de um objeto de usuário ou computador em Active Directory Domain Services. O chamador deve ter acesso de gravação à propriedade servicePrincipalName desse objeto.
[in] cSpn
Especifica o número de SPNs em rpszSpn. Se esse valor for zero e Operation contiver DS_SPN_REPLACE_SPN_OP, a função removerá todos os valores do atributo servicePrincipalName da conta especificada.
[in] rpszSpn
Ponteiro para uma matriz de cadeias de caracteres terminadas em nulo constantes que especificam os SPNs a serem adicionados ou removidos da conta identificada pelo parâmetro pszAccount . A função DsGetSpn é usada para compor SPNs para um serviço.
Retornar valor
Retorna ERROR_SUCCESS se tiver êxito ou um erro de serviço de diretório, RPC ou Win32, se não for bem-sucedido.
Comentários
A função DsWriteAccountSpn registra os SPNs para uma ou mais instâncias de um serviço. Os SPNs são usados por clientes, em conjunto com um serviço de autenticação confiável, para autenticar o serviço. Para proteger contra ataques de segurança em que um aplicativo ou serviço registra fraudulentamente um SPN que identifica algum outro serviço, a DACL padrão em contas de usuário e computador permite que apenas administradores de domínio registrem SPNs na maioria dos casos.
Uma exceção a essa regra é que um serviço em execução na conta LocalSystem pode chamar DsWriteAccountSpn para registrar um SPN simples do formulário "ServiceClass/Host:Port" se o host especificado no SPN for o nome DNS ou NetBIOS do computador no qual o serviço está sendo executado.
Outra exceção é que a DACL padrão em contas de computador permite que os chamadores registrem SPNs em si mesmos, sujeitos a determinadas restrições. Por exemplo, uma conta de computador pode ter SPNs em relação ao nome do computador, do formato "host/<nome do> computador". Como o nome do computador está contido no SPN, o SPN é permitido.
Nenhuma das regras acima se aplicará se a DSA estiver configurada para permitir que qualquer SPN seja gravado. No entanto, isso reduz a segurança, portanto, não é recomendável.
Os SPNs passados para DsWriteAccountSpn são realmente adicionados ao atributo Service-Principal-Name do objeto de computador em pszAccount. Essa chamada é feita usando rpc para o controlador de domínio em que o objeto de conta é armazenado para que ele possa impor com segurança a política sobre quais SPNs são permitidos na conta. O uso do LDAP para gravar diretamente na propriedade SPN não é permitido; todas as gravações devem vir por meio dessa chamada RPC. Leituras usando LDAP são permitidas.
Permissões necessárias para definir SPNs
Para escrever um SPN arbitrário em uma conta, o gravador requer o direito "Write ServicePrincipalName", que não é concedido por padrão à pessoa que criou a conta. Essa pessoa tem o direito "Gravar SPN validado" (presente apenas em contas de computador).
Veja abaixo um resumo dos direitos por usuário em contas de computador:
| Tipo de Usuário | Direitos |
|---|---|
| Pessoa criando a conta | Gravar SPN validado |
| Opers. de contas | Gravar SPN e gravar SPN validado |
| Usuários Autenticados | Nenhum |
| (self) | Gravar SPN Validado |
Em contas de usuário, não há nenhuma propriedade "SPN validado" ou direito "Gravar SPN". Em vez disso, o conjunto de propriedades "Gravar informações públicas" concede a capacidade de criar SPNs arbitrários.
Observação
O cabeçalho ntdsapi.h define DsWriteAccountSpn como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
| Requisito | Valor |
|---|---|
| Cliente mínimo com suporte | Windows Vista |
| Servidor mínimo com suporte | Windows Server 2008 |
| Plataforma de Destino | Windows |
| Cabeçalho | ntdsapi.h |
| Biblioteca | Ntdsapi.lib |
| DLL | Ntdsapi.dll |
Confira também
Funções de gerenciamento de replicação e controlador de domínio