Nombres de entidad de seguridad de servicio (SPN) en conexiones cliente (OLE DB)
Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)
Importante
SQL Server Native Client (a menudo abreviado SNAC) se ha quitado de SQL Server 2022 (16.x) y SQL Server Management Studio 19 (SSMS). Para nuevos trabajos de desarrollo, no se recomiendan ni el proveedor OLE DB de SQL Server Native Client (SQLNCLI o SQLNCLI11) ni el proveedor OLE DB de Microsoft para SQL Server (SQLOLEDB) heredado. Cambie al nuevo Controlador Microsoft OLE DB para SQL Server de ahora en adelante.
En este tema se describen propiedades y funciones miembro de OLE DB compatibles con los nombres principales de servicio (SPN) en aplicaciones cliente. Para más información sobre los SPN en las aplicaciones cliente, consulte Compatibilidad con el nombre de la entidad principal de servicio (SPN) en conexiones de cliente. Para ver un ejemplo, consulte Autenticación Kerberos integrada (OLE DB).
Palabras clave de cadena de inicialización de proveedor
Las siguientes palabras clave de cadena de inicialización de proveedor admiten SPN en aplicaciones OLE DB. En la tabla siguiente, los valores de la columna de palabra clave se usan para la cadena del proveedor de IDBInitialize::Initialize. Los valores de la columna de descripción se usan en cadenas de inicialización al conectar con ADO o IDataInitialize::GetDataSource.
Palabra clave | Descripción | Value |
---|---|---|
ServerSPN | Dirección SPN del servidor | SPN del servidor. El valor predeterminado es una cadena vacía, lo que hace que SQL Server Native Client use el SPN generado por el proveedor predeterminado. |
FailoverPartnerSPN | SPN de asociado de conmutación por error | SPN del asociado de conmutación por error. El valor predeterminado es una cadena vacía, lo que hace que SQL Server Native Client use el SPN generado por el proveedor predeterminado. |
Propiedades de inicialización de origen de datos
Las propiedades siguientes del conjunto de propiedades DBPROPSET_SQLSERVERDBINIT permiten a las aplicaciones especificar los SPN.
Nombre | Tipo | Uso |
---|---|---|
SSPROP_INIT_SERVERSPN | VT_BSTR, lectura/escritura | Especifica el SPN del servidor. El valor predeterminado es una cadena vacía, lo que hace que SQL Server Native Client use el SPN generado por el proveedor predeterminado. |
SSPROP_INIT_FAILOVERPARTNERSPN | VT_BSTR, lectura/escritura | Especifica el SPN para el asociado de conmutación por error. El valor predeterminado es una cadena vacía, lo que hace que SQL Server Native Client use el SPN generado por el proveedor predeterminado. |
Propiedades de origen de datos
Las propiedades siguientes del conjunto de propiedades DBPROPSET_SQLSERVERDATASOURCEINFO permiten a las aplicaciones detectar el método de autenticación.
Nombre | Tipo | Uso |
---|---|---|
SSPROP_INTEGRATEDAUTHENTICATIONMETHOD | VT_BSTR, solo lectura | Devuelve el método de autenticación que utiliza la conexión. El valor devuelto a la aplicación es el valor que Windows devuelve a SQL Server Native Client. A continuación se muestran los valores posibles: "NTLM", que se devuelve cuando una conexión se abre mediante la autenticación NTLM. "Kerberos", que se devuelve cuando una conexión se abre mediante la autenticación Kerberos. Si se ha abierto una conexión y no se puede determinar el método de autenticación, se devuelve VT_EMPTY. Esta propiedad solo se puede leer cuando se ha inicializado un origen de datos. Si intenta leer la propiedad antes de que se haya inicializado un origen de datos, IDBProperties::GetProperies devolverá DB_S_ERRORSOCCURRED o DB_E_ERRORSOCCURRED, según corresponda, y DBPROPSTATUS_NOTSUPPORTED se establecerá en DBPROPSET_PROPERTIESINERROR para esta propiedad. Este comportamiento está de acuerdo con la especificación básica de OLE DB. |
SSPROP_MUTUALLYAUTHENICATED | VT_BOOL, solo lectura | Devuelve VARIANT_TRUE si los servidores de la conexión se autenticaron mutuamente; de lo contrario, devuelve VARIANT_FALSE. Esta propiedad solo se puede leer cuando se ha inicializado un origen de datos. Si hay un intento de leer la propiedad antes de que se haya inicializado un origen de datos, IDBProperties::GetProperies devolverá DB_S_ERRORSOCCURRED o DB_E_ERRORSOCCURRED, según corresponda, y DBPROPSTATUS_NOTSUPPORTED se establecerá en DBPROPSET_PROPERTIESINERROR para esta propiedad. Este comportamiento está de acuerdo con la especificación básica de OLE DB Si este atributo se consulta para una conexión que no usó la autenticación de Windows, se devuelve VARIANT_FALSE. |
Compatibilidad de API OLE DB con SPN
La tabla siguiente describe las funciones del miembro OLE DB que admiten SPN en conexiones de cliente:
Función de miembro | Descripción |
---|---|
IDataInitialize::GetDataSource | pwszInitializationString puede contener las nuevas palabras clave ServerSPN y FailoverPartnerSPN. |
IDataInitialize::GetInitializationString | Si SSPROP_INIT_SERVERSPN y SSPROP_INIT_FAILOVERPARTNERSPN tienen valores no predeterminados, se incluirán en la cadena de inicialización mediante ppwszInitString como valores de palabra clave para ServerSPN y FailoverPartnerSPN. De lo contrario, estas palabras clave no estarán incluidas en la cadena de inicialización. |
IDBInitialize::Initialize | Si están habilitados los mensajes configurando DBPROP_INIT_PROMPT en las propiedades de inicialización de origen de datos, se mostrará el cuadro de diálogo Inicio de sesión de OLE DB. Esto permite escribir SPN tanto para el servidor principal como para su asociado de conmutación por error. La cadena de proveedor de DPPROP_INIT_PROVIDERSTRING, si se establece, reconoce las nuevas palabras clave ServerSPN y FailoverPartnerSPN y usa sus valores, si están presentes, para inicializar SSPROP_INIT_SERVER_SPN y SSPROP_INIT_FAILOVER_PARTNER_SPN. Se puede llamar a IDBProperties::SetProperties para establecer las propiedades SSPROP_INIT_SERVER_SPN y SSPROP_INIT_FAILOVER_PARTNER_SPN antes de llamar a IDBInitialize::Initialize. Ésta es una alternativa a utilizar una cadena de proveedor. Si una propiedad se establece en más de un lugar, un valor establecido mediante programación tiene precedencia sobre un conjunto de valores en la cadena de proveedor. Un conjunto de valores en una cadena de inicialización tiene precedencia sobre un conjunto de valores en un cuadro de diálogo de inicio de sesión. Si la misma palabra clave aparece más de una vez en la cadena del proveedor, el valor de primera aparición tiene prioridad. |
IDBProperties::GetProperties | Se puede llamar a IDBProperties::GetProperties para obtener los valores de las nuevas propiedades de inicialización de origen de datos SSPROP_INIT_SERVERSPN y SSPROP_INIT_FAILOVERPARTNERSPN y de las nuevas propiedades de origen de datos SSPROP_AUTHENTICATIONMETHOD y SSPROP_MUTUALLYAUTHENTICATED. |
IDBProperties::GetPropertyInfo | IdbProperties::GetPropertyInfo incluirá las nuevas propiedades de inicialización de origen de datos SSPROP_INIT_SERVERSPN y SSPROP_INIT_FAILOVERPARTNERSPN, o bien las nuevas propiedades de origen de datos SSPROP_AUTHENTICATION_METHOD y SSPROP_MUTUALLYAUTHENTICATED. |
IDBProperties::SetProperties | Se puede llamar a IDBProperties::SetProperties para establecer los valores de las nuevas propiedades de inicialización de origen de datos SSPROP_INITSERVERSPN y SSPROP_INIT_FAILOVERPARTNERSPN. Estas propiedades se pueden devolver en cualquier momento, pero si el origen de datos ya está abierto, se devolverá el error siguiente: DB_E_ERRORSOCCURRED, "La operación de múltiples pasos de OLE DB generó errores. Compruebe los valores de estado de OLE DB si es posible. No se realizó ningún trabajo." |