Compartir a través de


Función DsMakeSpnA (dsparse.h)

La función DsMakeSpn crea un nombre de entidad de seguridad de servicio (SPN) que identifica una instancia de servicio.

Una aplicación cliente usa esta función para crear un SPN, que usa para autenticar la instancia de servicio. Por ejemplo, el cliente puede pasar un SPN en el parámetro pszTargetName de la función InitializeSecurityContext.

Sintaxis

DSPARSE DWORD DsMakeSpnA(
  [in]           LPCSTR ServiceClass,
  [in]           LPCSTR ServiceName,
  [in, optional] LPCSTR InstanceName,
  [in]           USHORT InstancePort,
  [in, optional] LPCSTR Referrer,
  [in, out]      DWORD  *pcSpnLength,
  [out]          LPSTR  pszSpn
);

Parámetros

[in] ServiceClass

Puntero a una cadena terminada en null constante que especifica la clase del servicio. Este parámetro puede ser cualquier cadena única para ese servicio; El nombre del protocolo, por ejemplo, ldap o la forma de cadena de un GUID son aceptables.

[in] ServiceName

Puntero a una cadena terminada en NULL constante que especifica el nombre DNS, el nombre NetBIOS o el nombre distintivo (DN). Este parámetro debe ser distinto deNULL.

Para obtener más información sobre cómo se usan los parámetros Nombre DeInstancia y InstancePort para componer un SPN, consulte la siguiente sección Comentarios.

[in, optional] InstanceName

Puntero a una cadena terminada en NULL constante que especifica el nombre DNS o la dirección IP del host para una instancia del servicio.

Si ServiceName especifica el nombre DNS o NetBIOS del equipo host del servicio, el parámetro InstanceName debe ser NULL.

Si ServiceName especifica un nombre de dominio DNS, el nombre de un registro SRV DNS o un nombre distintivo, como el DN de un punto de conexión de servicio, el parámetro InstanceName debe especificar el nombre DNS o NetBIOS del equipo host del servicio.

[in] InstancePort

Número de puerto de una instancia del servicio. Use 0 para el puerto predeterminado. Si este parámetro es cero, el SPN no incluye un número de puerto.

[in, optional] Referrer

Puntero a una cadena terminada en NULL constante que especifica el nombre DNS del host que dio una referencia de dirección IP. Este parámetro se omite a menos que el parámetro ServiceName especifique una dirección IP.

[in, out] pcSpnLength

Puntero a una variable que contiene la longitud, en caracteres, del búfer que recibirá el nuevo SPN construido. Este valor puede ser 0 para solicitar el tamaño final del búfer de antemano.

El parámetro pcSpnLength también recibe la longitud real del SPN creado, incluido el carácter nulo de terminación.

[out] pszSpn

Puntero a una cadena terminada en NULL que recibe el SPN construido. Este búfer debe ser la longitud especificada por pcSpnLength. El parámetro pszSpn puede ser NULL solicitar el tamaño final del búfer de antemano.

Valor devuelto

Si la función devuelve un SPN, el valor devuelto es ERROR_SUCCESS. Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes códigos de error.

Observaciones

El formato del SPN generado por la función DsMakeSpn depende de los parámetros de entrada. Hay dos formatos básicos. Ambos formatos comienzan con la cadena ServiceClass seguida de un nombre de equipo host y un componente opcional InstancePort.

Nota Los servicios basados en host usan este formato.
 

Para generar un SPN con el formato "<ServiceClass>/<host>"

  1. Establezca el parámetro ServiceName en el nombre DNS del equipo host para la instancia de servicio. Este es el componente host del SPN.
  2. Establezca los parámetros InstanceName y Referer en NULL.
  3. Establezca el parámetro InstancePort en cero. Si instancePort es distinto de cero, el SPN tiene el siguiente formato:
    <service class>/<host>:<instance port>/<referrer>
    
Nota Los servicios replicables usan este formato.
 

Para generar un SPN con el formato "<ServiceClass>/<host>:<InstancePort>" format

  1. Establezca el parámetro InstanceName en el nombre DNS del equipo host para la instancia de servicio. Este es el componente host.
  2. Establezca el parámetro ServiceName en una cadena que identifique una instancia del servicio. Por ejemplo, podría ser el nombre distintivo del punto de conexión de servicio para esta instancia de servicio.
  3. Establezca el parámetro Referer en NULL.
  4. Establezca el parámetro InstancePort en cero. Si instancePort es distinto de cero, el SPN tiene el siguiente formato:
    <service class>/<host>:<instance port>/<service name>
    
El parámetro Referer solo se usa si el parámetro ServiceName especifica la dirección IP del equipo host del servicio. En este caso, de referencia especifica el nombre DNS del equipo que proporcionó la dirección IP como referencia. El SPN tiene el siguiente formato:
<service class>/<host>:<instance port>/<referrer>

donde el componente host es la cadena de InstanceName o la cadena serviceName de si instanceName es nully el componente InstancePort es opcional.

Los parámetros de cadena no pueden incluir el carácter de barra diagonal (/), ya que se usa para separar los componentes del SPN.

Nota

El encabezado dsparse.h define DsMakeSpn como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows Vista
servidor mínimo admitido Windows Server 2008
de la plataforma de destino de Windows
encabezado de dsparse.h (incluya Ntdsapi.h)
biblioteca de Ntdsapi.lib
DLL de Ntdsapi.dll

Consulte también

controlador de dominio y funciones de administración de replicación

initializeSecurityContext