Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

ADO - Seguridad Integrada

Estas en el tema de ADO - Seguridad Integrada en el foro de SQL Server en Foros del Web. El tema es asi: Cree una BD(SQL) desde un usuario q'NO forma parte del grupo Sysadmin, eso quiere decir q'solo yo(DBO) y el grupo(de SQL) ...
  #1 (permalink)  
Antiguo 09/11/2005, 22:18
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
ADO - Seguridad Integrada

El tema es asi: Cree una BD(SQL) desde un usuario q'NO forma parte del grupo Sysadmin, eso quiere decir q'solo yo(DBO) y el grupo(de SQL) Sysadmin pueden acceder a dicha base.
Se la configuro(desde el Adm.Coorporativo) para q'acceda validando mi login del Win.NT, por lo q'al ingresar al Analizador de Consultas no pongo ninguna password.

Ahora bien, tambien hice unas paginas(ASP) q'hacen ABM de dicha BD, el dolor de cabeza viene con el famoso String de Conexion. Lo que yo quiero hacer es poner un string del tipo Standard Security donde queda escrito un User y pass, para q'cualquier usuario pueda hacer ABM sin poner user/pass.

Paso a detallar todo lo q'probe:
--------------------------------
A-ODBC.Standard Security:
Código:
   "Driver={SQL Server};Server=ServerName;Database=BDName;Uid=[Dominio\UserName];Pwd=password;" '<- Linea 19
DA ERROR:
Microsoft OLE DB Provider for ODBC Drivers error '80040e4d' 

[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user '[Dominio\UserName]'.

/WebDir/CGI-BIN/login.asp, line 19
B-ODBC-Trusted Connection:
Código:
  "Driver={SQL Server};Server=ServerName;Database=DBName;Trusted_Connection=yes;"   '<- Linea 19

Este funciona OK, pero solo me sirve para mi login.NT(No me sirve)
C-ODBC.Prompt for Username and Password:
Código:
  oConn.Properties("Prompt") = adPromptAlways           '<- Linea 19
  oConn.Open "Driver={SQL Server};Server=ServerName;DataBase=DBName;" 

DA ERROR:
ADODB.Connection error '80040e21' 

Property value is invalid. Make sure the value is typed correctly. 

/WebDir/CGI-BIN/login.asp, line 19
Tambien se probo agregar(sp_grantlogin) un Grupo.NT como login de dicha BD, el tema es q'cuando ejecuto sp_helpuser, solo me veo a mi como unico usuario: [DOMINIO\UserName].

Con esto ultimo probe q'un usuario(de dicho Grupo.NT), intentara el login usando el String "B" (ODBC-Trusted Connection) y DA ERROR:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC SQL Server Driver][SQL Server]Cannot open database requested in login 'DBName'. Login fails.

/WebDir/CGI-BIN/login.asp, line 19 (es la linea donde esta el String de Conexion)


En fin,...me parece q'esto esta trabajando con Seguridad Integrada (del Modelo ADO) por lo q' ahora voy a probar usar Strings del tipo OLE DB(via IP), a ver q'pasa...

Desde ya agradesco a quien pueda aportar algo.
Saludos.

PD: Encontra cualquier tipo de Cx en http://www.allconnectionstrings.com
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #2 (permalink)  
Antiguo 10/11/2005, 10:11
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 5 meses
Puntos: 3
La unica opcion que tienes cuando usas seguridad integrada es la de usar por el IIS la Autentificacion Basica; el cual requiere por obligacion que los usuarios ingresen su usuario y password.
Lo mejor sera que uses la seguridad de sql server solamente (esto puedes usarlo siempre y cuando hayas instalado el sql server en mixed-mode); ya que solo tienes un login para accesar ; y como quieres que todos tus usuarios puedan accesar a tu base sin tener que pedir siempre el usuario y password... es la unica forma si quieres trabajar solo con un login...

El string de conexion seria algo asi (usando DSN-LESS)
"DRIVER={SQL Server};Server=TUSERVER;Database=TUBASE;Uid=TULOGI N;Pwd=TUPASSW;"
  #3 (permalink)  
Antiguo 10/11/2005, 16:32
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Asi es paralelamente siempre es mejor utilizar autentificacion de SQL, si es que no tienes realmente una red lo suficientemente disenada con Active Directory, ya que de lo contrario, tienes que otorgar permisos a los distintos usuarios, pudiendo acceder a otros recursos del servidor.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 11/11/2005, 16:01
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
¿Cual es tu aplicación?

Dependiendo del tipo de aplicación (y su configuración) es probable que a la DB no se intente conectar el usuario que corre la aplicación, sino el que corre el servicio del servidor de aplicaciones. Es el caso de ASP (en la configuración por default)
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 17/11/2005, 01:22
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Pregunta Solucion y Nuevo Error

Se reemplazo el grupo.NT por un usuario.NT y ahora se loguea OK,... pero al cargar el Recordset da error:

Microsoft OLE DB Provider for ODBC Drivers error '80040e37'

[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Prueba'.

/webdir/Pagina.asp, line 33


Paso a explicar lo nuevo:

Tengo una pagina.asp muy tonta que muestra 3 campos(Nombre,Apellido,Edad) de una Tabla(Prueba).
Ahora del lado del SQL.Server se agrego un usuario.NT(con sp_grantlogin), luego se lo asigno a la BD bajo el rol(SQL) Public(con sp_grantdbaccess) y por ultimo se le dieron todos los permisos(grant all). Resumiendo, lo que se ejecuto(por separado) desde SQL.Server fue:

sp_grantlogin [DOMINIO\username]

sp_grantdbaccess 'DOMINIO\username'

grant ALL (Statement Permissions)
TO [DOMINIO\username]

grant ALL (Object Permissions)
ON Prueba
TO [DOMINIO\username]

Tambien probe:

grant ALL (Object Permissions)
ON Prueba
TO public

Todo esto da OK, pero el tema es que cuando quiero acceder(via ASP) desde dicho usuario, me da ese error, pero desde mi usuario(q'es dbowner y es otra PC) no tengo ningun problema(es decir veo los datos de la BD en la pagina.asp).

Esta es el codigo (APS que esta OK)
-----------------------------------
Código:
<%
   Dim oConn,strSQL, objRS
   Set oConn = Server.CreateObject("ADODB.Connection")

   oConn.Open "Driver={SQL Server};Server=ServerName;Database=DBName;TrustedConnection=yes;"
   strSQL = "SELECT Nombre, Apellido, Edad, Fecha FROM Prueba"

   Set objRS = oConn.Execute(strSQL)         <--Esta es la linea.33 del Error
%>
<table BORDER=1 CELLSPACING=1 CELLPADDING=1>
      <TR><TD>&nbsp;Nombre</TD><TD>&nbsp;Apellido&nbsp;</TD><TD>&nbsp;Edad&nbsp;</TD><TD>&nbsp;&nbsp;Fecha</TD></TR>
<%
   while (not objRS.Eof)
      Response.Write("<tr><td>&nbsp;" & objRS("Nombre") & "</a></td><td>&nbsp;" & objRS("Apellido") & "</td><td>&nbsp;" & objRS("Edad") & "</td><td>&nbsp;" & objRS("Fecha") & "&nbsp;</td></tr>")
      objRS.MoveNext
   wend

   oConn.Close
   set objRS = nothing
   set oConn = nothing
%>
Busque el error en la web y me dice que es porque no existe la tabla(Prueba), y por la secuencia de sentencias(en ASP) se conecta a la BD OK, y cuando va a hacer el Query(cargar el RecordSet) da el error..., estoy casi seguro que el error es del IIS, pero la verdad no tengo idea que puede ser.

Desde ya agradezco mucho a quien pueda aportar algo.
Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #6 (permalink)  
Antiguo 17/11/2005, 12:45
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Revisa cual es el Default Database para el usuario, seguramente estará en master y no en tu DB.

También revisa la manera de indicar la DB a utilizar en el connection string:

...Server=servidor;Database=TUDATABASE;UID=....

Si quieres revisa www.connectionstrings.com para darte ideas.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #7 (permalink)  
Antiguo 19/11/2005, 07:13
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Sonrisa Listo !

Bueno finalmente salio la solucion , paso a contarles:

La clave estaba en el nombre de las tablas, es decir cuando uno crea una tabla/vista/funcion/etc en SQL, esta se crea asociada a el login q'la creo, esto se puede verificar en el Query Ananlizer, dentro del Explorador de Objetos, donde aparecen las Bases,Vistas,Funciones,SP, etc.
Lo que van a ver es el objeto(una tabla por ejemplo) asi: "LoginName.NombreTabla", mientras el login que hace referencia al objeto sea el mismo, basta solo con poner el nombre de la tabla, pero cuando el login es otro(algo muy usual en intranets), DEBE ESPECIFICARSE el LOGIN que la CREO: LoginName.NombreTabla


Bueno espero haber podido ayudar a quienes no lo sabian, la idea es aportar soluciones.
Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #8 (permalink)  
Antiguo 15/06/2006, 12:44
Avatar de @padawan@  
Fecha de Ingreso: julio-2005
Mensajes: 393
Antigüedad: 18 años, 9 meses
Puntos: 6
que tal yo tengo el mismo problema que tenias vos , pero no lo pude solucionar anteponiendo el nombre del login a la tabla (NombreLogin.NombreTabla) no me salio , asi que no se, la tabla esta creada en la base y todo pero no se que puede ser.
Si tenes alguna otra data por favor te agradeceria que me la pases.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:03.