Web Service Delegetation funktioniert nur unter bestimmten

8. Mai 2012 10:11

Hallo,

ich habe ein für mich kurioses Problem bzgl. Web Services:

Ich kann mich erst mit dem Web Service per Browser oder Visual Studio (von einem anderen Rechner als dem NAV+Web Service Server, also einem Client) verbinden, wenn ich ZUVOR direkt auf dem "NAV+Web Service" Server einmal eine Verbindung hergestellt habe. Zum Beispiel durch öffnen der URL im Browser, direkt auf dem NAV Server.

Es scheint so, als ob die Delegation nicht richtig durchgereicht wird. Wenn auf dem NAV-Server einmalig ausgeführt, funktioniert es für diesen speziellen User im Netz. Alle anderen müssten diesen Schritt für sich wiederholen.

Kleiner Screenshot zum verdeutlichen des Aufbaus:
overview.png


Andernfalls bekomme ich die folgende Fehlermeldung im Client-Browser

Code:
========================================================================
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="urn:microsoft-dynamics-schemas/error">
a:Microsoft.Dynamics.Nav.Types.NavDatabasePasswordException
</faultcode>
<faultstring xml:lang="de-DE">
The login failed when connecting to SQL Server DB-SERVER-17.
</faultstring>
<detail>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
The login failed when connecting to SQL Server DB-SERVER-17.
</string>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>


Übersicht der Installation:
  • NAV2009 R2
  • SQL Server 2005 auf db-server-17 läuft unter AD-Konto test\sqlservice (Win2003)
  • NAV Server + Web Service auf dbh-183 (Win XP)
  • Client Rechner mit Anmeldung test\janosch

Die Installation in der Infrastruktur ist durch unsere interne IT erledigt worden. Wir hatten unter anderem für den Delegation User das Problem mit dem falschen „UserAccountControl” Flag. Dieses muss mindestens 17301504 sein, das ist (TRUSTED_FOR_DELEGATION+TRUSTED_TO_AUTH_FOR_DELEGATION). Siehe auch http://blogs.msdn.com/b/german_nav_developer/archive/2009/06/09/troubleshooting-nav-2009-3-tier-konfiguration-auf-3-maschine.aspx Wurde bei uns dann, wie im Beitrag beschrieben für den NAV-Server User korrigiert. Seitdem kann der RTC ohne Probleme gestartet werden, das ging vorher nicht.

Der Best Practice Analyzer, ausgeführt auf dem NAV-Server dbh-183 gibt uns aber weiterhin folgende Fehler:

Code:
Constrained delegation is not configured with a valid TCP port number. Constrained delegation is not configured for the correct port SPN 'MSSQLSvc/DB-SERVER-17:1433' for user account 'test\nav-schedule'.

Service principal name is missing. SPN 'DynamicsNAV/dbh-183.tester.de:7046' was not found for user account 'test\nav-schedule'.

Service principal name is missing. SPN 'http/dbh-183.tester.de:7047' was not found for user account 'test\nav-schedule'. You must create this SPN to publish Web services from Microsoft Dynamics NAV.

Service principal name is missing. SPN 'DynamicsNAV/dbh-183:7046' was not found for user account 'test\nav-schedule'.


Laut unserer IT sind alle notwendigen Einrichtungen vorgenommen worden. Auch das purgen der Kerberos Tickets haben wir auf dem NAV-Server als auch SQL Server nach dem verändern von Einstellungen und Neustart des NAV-Server Dienste durchgeführt.

Hat jemand eine Idee woran es liegen könnte? Welche Prüfungen kann ich vornehmen, damit Fehler ausgeschlossen werden können?

Fehlen noch Informationen, ich reiche diese gerne umgehend nach.

Vielen Dank im Voraus für eure Hinweise.

Viele Grüße,

Janosch
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Web Service Delegetation funktioniert nur unter bestimmt

8. Mai 2012 12:57

Welche Buildversion wird eingesetzt?

Welches Ergebnis liefert der Befehl "setspn -X" ?

Du musst die SPNs immer mit NetBios-Name und FQDN eintragen! (also quasi 2 SPNs)

RTC und WebService SPNs sind zwei Paar Schuhe.

Anonymous Login ist immer ein SPN-Problem.

Re: Web Service Delegetation funktioniert nur unter bestimmt

8. Mai 2012 14:14

Hallo Jan,

JanGD hat geschrieben:Welche Buildversion wird eingesetzt?

Build 32012

JanGD hat geschrieben:Welches Ergebnis liefert der Befehl "setspn -X" ?


Code:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
C:\Users\huhu>setspn -X

Die Domäne "DC=tester,DC=de" wird überprüft.

Eintrag 9 wird verarbeitet.

MSSQLSvc/sof-server-01.tester.de:2856 wird auf diesen Konten registriert:

        CN=sqlservice,CN=Users,DC=tester,DC=de

        CN=Administrator,CN=Users,DC=tester,DC=de

{14E52635-0A95-4a5c-BDB1-E0D0C703B6C8}/sof-server-01.tester.de wird auf diesen Konten registriert:

        CN=backup-user,CN=Users,DC=tester,DC=de

        CN=SOF-SERVER-01,OU=Domain Controllers,DC=tester,DC=de

{14E52635-0A95-4a5c-BDB1-E0D0C703B6C8}/SOF-SERVER-01 wird auf diesen Konten registriert:

        CN=backup-user,CN=Users,DC=tester,DC=de

        CN=SOF-SERVER-01,OU=Domain Controllers,DC=tester,DC=de

3 Gruppen von doppelten SPNs gefunden.


Kann man hier was daraus sehen? Ich sehe das der SQL Dienst User offenbar doppelt eingetragen ist, aber nicht für db-server-17 sondern
MSSQLSvc/sof-server-01.tester.de:2856.

Viele Grüße,
Janosch

Re: Web Service Delegetation funktioniert nur unter bestimmt

8. Mai 2012 16:49

Kurze Ergänzung, vielleicht hilft diese Ausgabe:

(SPN) für CN=sqlservice
Code:
Registrierte Dienstprinzipalnamen (SPN) für CN=sqlservice,CN=Users,DC=tester,D
C=de:
        MSSQLSvc/db-server-17.tester.de
        MSSQLSvc/db-server-17
        MSSQLSvc/db-server-17:1433
        MSSQLSvc/db-server-17.tester.de:1433
        MSSQLSvc/DB-Server-13.tester.de:1433
        MSSQLSvc/DB-Server-13.tester.de
        MSSQLSvc/DB-YPCLUSTER-01.tester.de:1433
        MSSQLSvc/DB-YPCLUSTER-01.tester.de
        MSSQLSvc/DB-Server-10.tester.de:1433
        MSSQLSvc/DB-Server-19.tester.de
        MSSQLSvc/DB-Server-19.tester.de:1433
        MSSQLSvc/WIN-6J5AKI2T8HB.tester.de:1433
        MSSQLSvc/WIN-6J5AKI2T8HB.tester.de
        MSSQLSvc/DB-Server-21.tester.de:PZBE
        MSSQLSvc/DB-Server-21.tester.de:61823
        MSSQLSvc/DB-Server-21.tester.de
        MSSQLSvc/DB-Server-21.tester.de:1433
        MSSQLSvc/sof-server-01.tester.de:2856
        MSSQLSvc/DB-Server-21.tester.de:61350
        MSSQLSvc/DB-Server-21.tester.de:DISS
        MSSQLSvc/DB-Server-06.tester.de:1433
        MSSQLSvc/DB-SERVER-08.tester.de:1433
        MSSQLSvc/DB-SERVER-01.tester.de:1433
        MSSQLSvc/ALT-SERVER-06.tester.de:1433
        MSSQLSvc/svctag-6P5Z82J.tester.de:1433
        MSSQLSvc/bckptmp.tester.de:1433


Bei dem AD-User mit dem der NAV Dienst läuft, bin ich mir nicht sicher ob das so richtig ist:
SPNs für CN=nav-schedule
Code:
Registrierte Dienstprinzipalnamen (SPN) für CN=nav-schedule,CN=Users,DC=tester
,DC=de:
        http/dbh-183:7047
        http/dbh-183.tester.de:7047
        http/dbh-183:7046
        http/dbh-183.tester.de:7046
        DynamicsNAV/dbh-183:7046
        DynamicsNAV/dbh-183.tester.de:7046
        DynamicsNAV/DBH-183.UTE.tester.de:7046
        MSSQLSvc/NAVSQL.UTE.tester.de:1433

Re: Web Service Delegetation funktioniert nur unter bestimmt

8. Mai 2012 17:28

Auch auf die Gefahr hin hier vielleicht Alleinunterhalter zu werden :mrgreen: , habe ich eine Vermutung:

bei dem AD User nav-schedule sind auch einige SPNs hinterlegt. Ich habe die noch Mal mit der Fehlermeldung aus dem BPA verglichen:
  • DynamicsNAV/DBH-183.UTE.tester.de:7046 > müsste raus, unterscheidet sich nur von groß und klein sowie das UTE mittendrin
  • MSSQLSvc/NAVSQL.UTE.tester.de:1433 > müsste raus, ist der falsche rechner(NAVSQL.UTE)
  • MSSQLSvc/db-server-17:1433 > muss rein, das ist der den der BPA für nav-schedule haben will
  • MSSQLSvc/db-server-17.tester.de:1433 > weis nicht ob der rein muss, werden wir sicherheitshalber machen

Mal sehen, wenn die Änderung von den IT-Admins durchgeführt wird.

Re: Web Service Delegetation funktioniert nur unter bestimmt

10. Mai 2012 10:50

Das ist ein Irrtum. An dem NAV Service Tier Account haben die SQL-SPNs *nichts* zu suchen.
Das SQL- und ST-Benutzerkonto muss deren eigenen SPNs haben, keine Überschneidung an der Stelle.
Natürlich müssen beide Accounts entsprechende Delegation Rechte haben.

Dazu gibt es ein Video auf mibuso bzgl. Service Tier Delegation von einem MS Support Technician.

Re: Web Service Delegetation funktioniert nur unter bestimmt

10. Mai 2012 11:23

Hallo Jan,

JanGD hat geschrieben:Das ist ein Irrtum. An dem NAV Service Tier Account haben die SQL-SPNs *nichts* zu suchen.
Das SQL- und ST-Benutzerkonto muss deren eigenen SPNs haben, keine Überschneidung an der Stelle.


Sieht bei uns für den NAV ST Account jetzt so aus

Code:
Registered ServicePrincipalNames for CN=nav-schedule,CN=Users,DC=tester,DC=de:
    http/dbh-183.tester.de:7047
    http/dbh-183:7047
    DynamicsNAV/dbh-183:7046
    DynamicsNAV/dbh-183.tester.de:7046
    http/dbh-183.tester.de:7046
    http/dbh-183:7046


JanGD hat geschrieben:Natürlich müssen beide Accounts entsprechende Delegation Rechte haben.


Wie kann ich das am Besten kontrollieren? Geht das auch ohne Domain-Admin Rechte?

Was mich am meisten wundert ist das ganz oben beschriebene Phänomen: das es schon grundsätzlich laufen würde,
aber erst nachdem man mit seiner eigenen Anmeldung auf dem Service Tier den Web Service einmalig aufgerufen hat.

JanGD hat geschrieben:Dazu gibt es ein Video auf mibuso bzgl. Service Tier Delegation von einem MS Support Technician.


Danke. Das kenne ich. Bin der Meinung das Vorgehen unserem Administrator mitgeteilt zu haben.

Bin langsam am verzweifeln, wie wir hier weiter kommen...

Viele Grüße,
Janosch

Re: Web Service Delegetation funktioniert nur unter bestimmt

10. Mai 2012 11:49

janosch hat geschrieben:Hallo Jan,

JanGD hat geschrieben:Das ist ein Irrtum. An dem NAV Service Tier Account haben die SQL-SPNs *nichts* zu suchen.
Das SQL- und ST-Benutzerkonto muss deren eigenen SPNs haben, keine Überschneidung an der Stelle.


Sieht bei uns für den NAV ST Account jetzt so aus

Code:
Registered ServicePrincipalNames for CN=nav-schedule,CN=Users,DC=tester,DC=de:
    http/dbh-183.tester.de:7047
    http/dbh-183:7047
    DynamicsNAV/dbh-183:7046
    DynamicsNAV/dbh-183.tester.de:7046
    http/dbh-183.tester.de:7046
    http/dbh-183:7046


JanGD hat geschrieben:Natürlich müssen beide Accounts entsprechende Delegation Rechte haben.


Wie kann ich das am Besten kontrollieren? Geht das auch ohne Domain-Admin Rechte?

Was mich am meisten wundert ist das ganz oben beschriebene Phänomen: das es schon grundsätzlich laufen würde,
aber erst nachdem man mit seiner eigenen Anmeldung auf dem Service Tier den Web Service einmalig aufgerufen hat.

JanGD hat geschrieben:Dazu gibt es ein Video auf mibuso bzgl. Service Tier Delegation von einem MS Support Technician.


Danke. Das kenne ich. Bin der Meinung das Vorgehen unserem Administrator mitgeteilt zu haben.

Bin langsam am verzweifeln, wie wir hier weiter kommen...

Viele Grüße,
Janosch


Hallo,

Man muss für die Tätigkeiten kein Domänen-Admin sein. Sag Deinen AD-ADMs, sie mögen die NAV Systemnutzer in eine eigene "OU" auslagern und Dir Rechte geben, die SPNs der Accounts in der OU ändern zu dürfen.
Zum Nachschauen braucht man keine Domänen Adminrechte. Du musst nur das Active Directory Feature (nicht Domänencontroller) auf Deinem Rechner installiert sein, um "Active Directory Benutzer und Computer" unter Verwaltung zu finden.

Wozu brauchst du http/xxx:7046?