Discussion:
Anmeldung an MSSQL-Server ueber vertraute Verbindung mit PHP
(zu alt für eine Antwort)
Irmgard Schwenteck
2004-12-06 21:25:02 UTC
Permalink
Hallo,

kann man die Verbindung zu einem MS-SQL-Server auch über NT-Sicherheit
realisieren?
mssql_connect() erwartet wohl immer einen SQL-Nutzernamen.

Hintergrund ist, daß in einer Abrechnungs-Tabelle jeder Nutzer nur auf
seine Leistungen Zugriff haben soll. Entsprechend würde ich dann den
SQL-string zusammensetzen.

Irmgard
Frank Kalis
2004-12-07 10:15:04 UTC
Permalink
Post by Irmgard Schwenteck
kann man die Verbindung zu einem MS-SQL-Server auch über NT-Sicherheit
realisieren?
Ja, z.B. mit COM und ADO

$db = new COM("ADODB.Connection");
$dsn = "DRIVER={SQL Server};
SERVER={XXX};DATABASE={FRANK_PLAYGROUND};Trusted_Connection=yes;";
$db->Open($dsn);

$delID =$HTTP_GET_VARS['id'];
$delWho = $HTTP_GET_VARS['who'];
switch($HTTP_GET_VARS['action'])
{
...
$rs = $db->Execute("...");
$count = $db->Execute("...");
Post by Irmgard Schwenteck
mssql_connect() erwartet wohl immer einen SQL-Nutzernamen.
AFAIK, Ja.
-----------------------
--Frank
http://www.insidesql.de
-----------------------
Irmgard Schwenteck
2004-12-08 13:10:32 UTC
Permalink
Hallo
Post by Frank Kalis
Post by Irmgard Schwenteck
kann man die Verbindung zu einem MS-SQL-Server auch über NT-Sicherheit
realisieren?
$db = new COM("ADODB.Connection");
$dsn = "DRIVER={SQL Server};
SERVER={XXX};DATABASE={FRANK_PLAYGROUND};Trusted_Connection=yes;";
$db->Open($dsn);
Braucht es dazu in der php.ini noch eine Anpassung?
Oder hängt es an Berechtigungen, um so eine dsn erstellen zu können?

ich bekomme jedenfalls diese Fehlermeldung:
Warning: (null)(): Invoke() failed: Ausnahmefehler aufgetreten. Source:
Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][ODBC
SQL Server Driver][SQL Server]Fehler bei der Anmeldung für den Benutzer
'NT-AUTORITÄT\ANONYMOUS-ANMELDUNG'.

Mein NT-Benutzer-Name ist natürlich auf dem SQL-Server angelegt (ich
selber bin sowieso sysadmin).

Danke erst mal für den Tip, aber ich denke, ich werde es erst mal bei
der SQL-Sicherheit belassen und mich dafür mit sessions beschäftigen.

Gruß
Irmgard
Frank Kalis
2004-12-08 13:47:03 UTC
Permalink
Post by Irmgard Schwenteck
Braucht es dazu in der php.ini noch eine Anpassung?
Oder hängt es an Berechtigungen, um so eine dsn erstellen zu können?
PHP, Webserver und SQL Server müssen auf einer Maschine laufen, AFAIK. So
richtig tief bin ich nie in diese Materie eingestiegen. Mehr so zum
ausprobieren, wie es geht. PHP und SQL Server sind nicht unbedingt
füreinander geschaffen. Übrigens, gibt es zu COM und SQL Server auch ein
Beispiel im PHP Manual.
Post by Irmgard Schwenteck
Danke erst mal für den Tip, aber ich denke, ich werde es erst mal bei
der SQL-Sicherheit belassen und mich dafür mit sessions beschäftigen.
Viel Spaß!
-----------------------
--Frank
http://www.insidesql.de
-----------------------
Irmgard Schwenteck
2004-12-08 14:32:37 UTC
Permalink
Post by Frank Kalis
PHP, Webserver und SQL Server müssen auf einer Maschine laufen, AFAIK. So
Dann ist alles klar.
Das ist nicht gegeben und das wollen unsere Admins auch nicht.
Post by Frank Kalis
Post by Irmgard Schwenteck
Danke erst mal für den Tip, aber ich denke, ich werde es erst mal bei
der SQL-Sicherheit belassen und mich dafür mit sessions beschäftigen.
Viel Spaß!
Wünsch mir lieber viel Zeit ;-)

Irmgard
Frank Kalis
2004-12-08 15:09:08 UTC
Permalink
Post by Irmgard Schwenteck
Wünsch mir lieber viel Zeit ;-)
Viel Zeit! :-P
-----------------------
--Frank
http://www.insidesql.de
-----------------------
Elmar Boye
2004-12-08 17:36:17 UTC
Permalink
Hallo Irmgard,
Post by Irmgard Schwenteck
Warning: (null)(): Invoke() failed: Ausnahmefehler aufgetreten.
[Microsoft][ODBC SQL Server Driver][SQL Server]Fehler bei der
Anmeldung für den Benutzer 'NT-AUTORITÄT\ANONYMOUS-ANMELDUNG'.
Ich mache zwar nichts mit PHP.
Anhand der Meldung würde ich mal vermuten, das dabei aber die gleichen
Bedingungen wie bei IIS gelten. Und das bedeutet das in der Regel ohne
Anmeldung (eben anonym läuft).
Um integrierte Sicherheit zu nutzen müssten die Benutzer sich schon
mit integrierter Sicherheit anmelden. Was aber in der Regel nur im
Gespann IIS <-> IE (und im Intranet) so ohne weiteres klappt.

Ansonsten benötigst Du etwas wie Impersonation, zu ASP.NET
http://support.microsoft.com/?kbid=306158
Ob es ein passendes Modul für PHP und den Webserver Deiner
Wahl gibt, bin ich allerdings vollkommen überfragt.

Gruss
Elmar
Irmgard Schwenteck
2004-12-09 11:09:23 UTC
Permalink
Hallo Elmar
Post by Elmar Boye
Anhand der Meldung würde ich mal vermuten, das dabei aber die gleichen
Bedingungen wie bei IIS gelten. Und das bedeutet das in der Regel ohne
Anmeldung (eben anonym läuft).
Um integrierte Sicherheit zu nutzen müssten die Benutzer sich schon
mit integrierter Sicherheit anmelden. Was aber in der Regel nur im
Gespann IIS <-> IE (und im Intranet) so ohne weiteres klappt.
Auch wenn es "nur" eine Intranet-Lösung ist, setzen wir trotzdem den
Apache ein.
Mit ASP.NET und IIS geht es, aber das wäre Overkill für die eine
Abfrage. Ich bleibe bei PHP und den webserver ändern wir auch nicht mehr.
Post by Elmar Boye
Ansonsten benötigst Du etwas wie Impersonation, zu ASP.NET
http://support.microsoft.com/?kbid=306158
Ob es ein passendes Modul für PHP und den Webserver Deiner
Wahl gibt, bin ich allerdings vollkommen überfragt.
Danke für die Antworten. Hätte ja sein können, es geht so einfach, wie
ich es mir gedacht habe. Aber dann müssen die Leute ihr passwort eben
nochmal eingeben, das ist schon zu verkraften.

Gruß
Irmgard

Loading...