Windows-Authentifizierung zeigt ständig Anmelde-Bildschirm

Heute habe ich bei einem Kunden den Fall gehabt, dass trotz dass Windows-Anmeldung im IIS 7 konfiguriert war, und im korrekt angezeigten Browser-Anmelde-Dialog die richtigen Anmeldedaten eingegeben wurden, keine Anmeldung möglich war.

Vielmehr ist 3 mal der Anmelde-Dialog erschienen und danach kam die HTTP-Fehlermeldung 401.2 (oder war’s 401.1?).

Die Lösung wurde dann von einem wirklich kompetenten Administrator beim Kunden geliefert: Die Authentifizierungsprovider waren in der Reihenfolge „Negotiate“ und dann „NTLM“.

Als wir NTLM ganz nach oben geschoben haben, ging alles.

windows-authentication-not-working

windows-authentication-successfully-working

OMG!

CryptographicException bei Verwendung von Oracle.ManagedDataAccess lösen

Gestern hatte ein Kollege beim Aufsetzen einer Website ASP.NET MVC 4 auf einem IIS unter Windows Server 2008 R2 eine Fehlermeldung:

Zunächst war es eine Herausforderung, statt den „normalen“ Oracle.DataAccess-Klassen die Oracle.ManagedDataAccess-Klassen zum Laufen zu bringen. Hier haben uns zwei Artikel geholfen:

Wir haben dann zum Lösen des eigentlichen Fehlers lange rumgesucht, viel ausprobiert und schließlich beim Weblog-Artikel „SOLVED: Windows Identity Foundation – “The system cannot find the file specified”“ fündig geworden.

Die Lösung bestand dann schlicht darin, im Anwendungspool (App Pool) für die Anwendung die Option „Benutzerprofil laden“ auf „True“ zu stellen:

IIS App Pool - Benutzerprofil laden

Danach lief alles wie gewünscht.

IIS and Apache on the same machine

IIS7 and Apache on the same machine:

There was a question on http://forums.iis.net about having Apache and IIS7 on the same box. here are the instructions I tested on Vista RTM and Windows Server 2008 B3. This assumes you have two ip addresses on the box, 192.168.0.90 and 192.168.0.91. It can be any ip’s.

1) Added or make sure your machine has two ip’s
2) Open a command prompt
3) Type netsh
4) Type http
5) Type sho iplisten. It should be blank
6) Type add iplisten ipaddress=192.168.0.90
You should get IP address successfully added
7) Type sho iplisten again
It should sho 192.168.0.90 in the list
8) Type exit to get out of netsh
9) Type type netstat -an. See if you notice 192.168.0.90:80 in the list. If you see 0.0.0.0:80, do an iisreset

10) Download and install Apache ( I did it with 2.2.4)
http://mirror.nyi.net/apache/httpd/binaries/win32/apache_2.2.4-win32-x86-no_ssl.msi
11) Do a default install,
12) Open httpd.conf and adjust the ip listen to 192.168.0.91:80

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
#Was 80
#Change to

Listen 192.168.0.91:80

12) Restart the Apache service. (for some reason the start / stop thing didn’t work for me, I used net stop apache2 net start apache2.)
13) Type netstat -an
14) You should see 192.168.0.90:80 and 192.168.0.91:80. Open a browser and test both IP’s to see if IIS7 and Apache come up.
15) Test restarting Apache service to see if it works after that.
16) Turn off Apache, browse IIS, turn of IIS, browse Apache. Test it every which way to see if it works.

Hope this helps

Neat!

Ergänzung August 2018

Wichtig ist auch, auf der Server-lokalen Firewall auf dem Windows-Server, eine Regel für Apache einzurichten.

Bei mir sah dir Regel grob so aus:

  • Name: Apache HTTP Server
  • Enabled: Ja
  • Action: Allow the connection
  • Program: %ProgramFiles%\Apache24\bin\httpd.exe
  • Profiles: Domain, Private, Public

Es ist also eine Regel auf ein Programm, nämlich „httpd.exe“, das in allen Profilen aktiv ist. Extra Ports habe ich nicht angegeben.

Weiterhin war wichtig, dass der Apache-Dienst als Starttyp „Automatisch (Verzögerter Start)“ eingerichtet hat. Ansonsten kam es bei mir vor, dass der IIS seine Sites deaktiviert hatte, und auch Apache nicht lief. Keine Ahnung, ob das Korrelation oder Kausalität war.

Apache und IIS 7 auf derselben Maschine

Hier gibt es eine kleine Anleitung. Auszüge:

There was a question on http://forums.iis.net about having Apache and IIS7 on the same box.  here are the instructions I tested on Vista RTM and Windows Server 2008 B3.  This assumes you have two ip addresses on the box, 192.168.0.90 and 192.168.0.91.  It can be any ip’s.

1) Added or make sure your machine has two ip’s
2) Open a command prompt
3) Type netsh
4) Type http
5) Type sho iplisten.  It should be blank
6) Type add iplisten ipaddress=192.168.0.90
You should get IP address successfully added
7) Type sho iplisten again
It should sho 192.168.0.90 in the list
8) Type exit to get out of netsh
9) Type type netstat -an. See if you notice 192.168.0.90:80 in the list.  If you see 0.0.0.0:80, do an iisreset

10) Download and install Apache ( I did it with 2.2.4)
http://mirror.nyi.net/apache/httpd/binaries/win32/apache_2.2.4-win32-x86-no_ssl.msi
11) Do a default install,
12) Open httpd.conf and adjust the ip listen to 192.168.0.91:80

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
#Was 80
#Change to

Listen 192.168.0.91:80

12) Restart the Apache service.  (for some reason the start / stop thing didn’t work for me, I used net stop apache2 net start apache2.)
13) Type netstat -an
14) You should see 192.168.0.90:80 and 192.168.0.91:80.  Open a browser and test both IP’s to see if IIS7 and Apache come up.
15) Test restarting Apache service to see if it works after that.
16) Turn off Apache, browse IIS, turn of IIS, browse Apache. Test it every which way to see if it works.

Geht übrigens auch mit mehreren IP-Adressen für den IIS. Dann einfach mehrfach das „add iplisten ipaddress=…“ aufrufen. Geschickt, wenn z.B. mehrere SSL-Websites auf dem IIS installiert werden sollen.

Ergänzung August 2018

Wichtig ist auch, auf der Server-lokalen Firewall auf dem Windows-Server, eine Regel für Apache einzurichten.

Bei mir sah die Regel grob so aus:

  • Name: Apache HTTP Server
  • Enabled: Ja
  • Action: Allow the connection
  • Program: %ProgramFiles%\Apache24\bin\httpd.exe
  • Profiles: Domain, Private, Public

Es ist also eine Regel auf ein Programm, nämlich „httpd.exe“, das in allen Profilen aktiv ist. Extra Ports habe ich nicht angegeben.

Weiterhin war wichtig, dass der Apache-Dienst als Starttyp „Automatisch (Verzögerter Start)“ eingerichtet hat. Ansonsten kam es bei mir vor, dass der IIS seine Sites deaktiviert hatte, und auch Apache nicht lief. Keine Ahnung, ob das Korrelation oder Kausalität war.