Schlagwort-Archive: Windows

Nach erfolgreicher Anmeldung am ADFS Proxy erscheint AADSTS50008: SAML token is invalid.

Nach erfolgreicher Anmeldung am ADFS Proxy erscheint AADSTS50008: SAML token is invalid. screenshot-error-message

Beim Betrieb einer föderierten Domain, welche mittels ADFS / ADFS Proxy Benutzer via Single Sign On gegen Office 365 dienste authentifiziert erscheint ohne Change an den on premise Systemen plötzlich die Fehlermeldung:

  • Leider können wir Sie nicht anmelden.
  • Es wurde eine ungültige Anforderung empfangen.
  • Weitere technische Informationen:
  • Correlation ID: 99a6cc54-47f1-4936-a57c-59050600a8f8
  • Timestamp: 2015-10-23 05:12:39Z
  • AADSTS50008: SAML token is invalid.

Beim Studium von KB3015526 (https://support.microsoft.com/en-us/kb/3015526) erscheint der Hinweis, auf dem ADFS Server das Powershell-Kommando:

Update-MsolFederatedDomain -DomainName [verified domain]

abzusetzen, da es sich hierbei um einen bekannten Fehler handelt.

Gesagt getan – auf dem ADFS Server mit Hilfe der Microsoft Online Services Module auf dem ADFS Proxy und zwei Befehlen durchgeführt – leider ohne Erfolg.

PS C:\Windows\system32> connect-msolservice
WARNING: There is a newer version of the Microsoft Online Services Module. Your current version will still work as expected, however the latest version can be downloaded at https://portal.microsoftonline.com.
PS C:\Windows\system32> Update-MsolFederatedDomain -DomainName xyz.net
Successfully updated ‚xyz.net‘ domain.

Der Update-Befehl brachte in diesem Fall nicht die erwarteteLösung.

Beim weiteren Troubleshooting der Domaincontroller Logs fiel auf, dass aufgrund einer Firewallmigration die Zeit vom Zeitserver nicht mehr korrekt vom Internet synchronisiert wurde. Der gesamte Forrest ging 5 Minuten vor.

Lösung für AADSTS50008: SAML token is invalid bei Office 365 / Microsoft Azure Active Directory war in diesem Fall eine resynchronisation der Zeiten. Danach klappte es auch wieder mit der Anmeldung am Office 365 mittels ADFS / ADFS Proxy. In diesem Sinne – tempus fugit.

Entfernten Service mit Hilfe des Service Controllers durchstarten

Möchte man beispielsweise den Prozess w32time (Windows Zeitdienst) einmal durchstarten reicht die Eingabe des verketteten Befehls in einer cmd mit administrativen Rechten:

C:\Windows\system32>net stop w32time && net start w32time
The Windows Time service is stopping.
The Windows Time service was stopped successfully.

The Windows Time service is starting.
The Windows Time service was started successfully.

Soll dieses Durchstarten vom Prozess w32time beispielsweise auf einem entfernten Ziel-Server / PC ausgeführt werden hilft der Service Controller vom Windows:

C:\Windows\system32>sc \\vh01 stop w32time && sc \\vh01 startw32time

SERVICE_NAME: w32time
TYPE               : 20  WIN32_SHARE_PROCESS
STATE              : 3  STOP_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE    : 0  (0x0)
SERVICE_EXIT_CODE  : 0  (0x0)
CHECKPOINT         : 0x2
WAIT_HINT          : 0x3e8

SERVICE_NAME: w32time
TYPE               : 20  WIN32_SHARE_PROCESS
STATE              : 2  START_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE    : 0  (0x0)
SERVICE_EXIT_CODE  : 0  (0x0)
CHECKPOINT         : 0x0
WAIT_HINT          : 0x7d0
PID                : 1000
FLAGS              :

Nähere Informationen zum SC gibt es hier: https://technet.microsoft.com/de-de/library/bb490995.aspx.

PS: Mit net time kann man sich auch die entfernte Zeit anzeigen lassen:

C:\Windows\system32>net time \\vh01
Current time at \\vh01 is 23.10.2015 19:48:12

The command completed successfully.

Nützliche KMS Kommandos für die CLI

KMS steht für „Key Management Infrastrukture“ und dient zur Aktivierung der Betriebssysteme innerhalb einer Organisationsstruktur für Volumenlizenzen. Neben dem „KMS“ gibt es auch eine weitere Möglichkeit zur Aktivierung, dem „MAK“, für „Multiple Activation Key“.

Folgend nun ein paar Tipps und Kniffe aus dem Tagesgeschäft.

Ist der KMS im DNS veröffentlicht, so wird er automatisch von dem AD-Member in der Domain über den DNS SRV-Record discovered. Mit dem Tool nsloookup kann der KMS Server auch abgefragt werden:

U:\>nslookup -type=srv _vlmcs._tcp.jorde.it
Server: dc01.jorde.it
Address: 10.10.11.12

_vlmcs._tcp.jorde.it     SRV service location:
priority       = 0
weight         = 0
port           = 1688
svr hostname   = kms01.jorde.it
kms01.jorde.it internet address = 10.11.12.13

Man kann allerdings auch mit Hilfe des Tools slmgr.vbs eine Aktivierung gegen einen KMS forcieren.

slmgr.vbs /skms 10.11.12.13:1688
slmgr.vbs /ipk FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
slmgr.vbs /ato

Der Schalter /skms setzt hierbei den KMS, der Schalter /ipk hinterlegt den KMS-Client Key, der Schalter /ato forciert die Aktivierung gegen das Ziel mit dem Key.

Auch zur Aktivierung von Office kann der Windows Server KMS genutzt werden. Herbei ist das nützliche Tool ospp.vbs hilfreich

cd „%programfiles(x86)%\Microsoft Office\Office15“
cscript ospp.vbs /sethst:kms01.jorde.it
cscript ospp.vbs /act

Ob der KMS aufnahmebereit oder für Office freigegeben ist, kann mittels slmgr.vbs /dlv all bzw slmgr.vbs /dli all. Der Schalter dlv steht hierbei für erweiterte Informationen. Der Zusatz all für die Auflistung aller Activation IDs.

Die KMS Serverkeys sind im Volume Licensing Service Center (VLSC) erhältlich.

Die KMS Clientkeys sind public:

 

Windows Server 2012 R2 „Recommended Hotfix List“

Gibt es jetzt auch als Neuauflage für Windows Server 2012 R2 Hyper-V:

http://social.technet.microsoft.com/wiki/contents/articles/20885.hyper-v-update-list-for-windows-server-2012-r2.aspx (wird ständig von Microsoft aktualisiert)

Das gleiche jetzt auch als KB Artikel direkt von Microsoft speziell für Failover Cluster:

http://support.microsoft.com/kb/2920151 (wird ständig von Microsoft aktualisiert)

 

IIS, WPI, date.timezone=Asia/Kuwait und Cacti

Bei der Vorbereitung einer Cacti-Installation auf einem Windows Server 2012 kann man sehr bequem PHP mit dem sogenannten „Microsoft Web Platform Installer“ installieren. Das ist eine sehr smarte Geschichte beim Deployment, die viel Zeit spart da bei der Installation sämtliche Abhängigkeiten mit installiert und konfiguriert werden (den WPI in der jeweils aktuellen Version gibt es hier http://www.microsoft.com/web/downloads/platform.aspx).

Nach der Installation und Konfiguration der Cacti-Komponenten konnte ich jedoch keine Datenpunkte in den jeweiligen Graphen sehen:

fehlende Daten im Cacti-Graphen

Es wurde lediglich ein „-1.#J“ im Interface-Graph angezeigt.

Ein Studium des Logs brachte auch keine Ergebnisse.

Die Jobs liefen sauber durch:

06/24/2013 06:35:16 PM – POLLER: Poller[0] CACTI2RRD: c:/rrdtool/rrdtool.exe update C:\inetpub\wwwroot\cacti\rra\da-vinci_traffic_in_191.rrd –template traffic_in:traffic_out 1372091715:0:0
06/24/2013 06:35:16 PM – POLLER: Poller[0] CACTI2RRD: c:/rrdtool/rrdtool.exe update C:\inetpub\wwwroot\cacti\rra\da-vinci_traffic_in_190.rrd –template traffic_out:traffic_in 1372091715:0:0
06/24/2013 06:35:16 PM – CMDPHP: Poller[0] Host[9] DS[259] SNMP: v2: 10.41.254.254, dsname: traffic_out, oid: .1.3.6.1.2.1.31.1.1.1.10.7, output: 0
06/24/2013 06:35:16 PM – CMDPHP: Poller[0] Host[8] DS[221] SNMP: v2: 10.41.254.250, dsname: traffic_in, oid: .1.3.6.1.2.1.31.1.1.1.6.10019, output: 0

… und auch die RRD-Dateien wurden aktualisiert…

C:\rrdtool>rrdtool.exe info C:\inetpub\wwwroot\cacti\rra\da-vinci_traffic_in_183
.rrd
filename = „C:\inetpub\wwwroot\cacti\rra\da-vinci_traffic_in_183.rrd“
rrd_version = „0003“
step = 300
last_update = 1372103415

C:\rrdtool>rrdtool.exe info C:\inetpub\wwwroot\cacti\rra\da-vinci_traffic_in_183
.rrd
filename = „C:\inetpub\wwwroot\cacti\rra\da-vinci_traffic_in_183.rrd“
rrd_version = „0003“
step = 300
last_update = 137210371

Die Erkenntnis kam dann nach dem Abendessen, als ein von mir beim Troubleshooten noch nicht gelöschter Graph plötzlich doch Datenpunkte anzeigte – ein Zeitthema lag nah.

Also fix die PHP.ini gecheckt (liegt bei einer WPI Installation C:\Program Files (x86)\PHP\v5.4), dort unter „Module Settings“ die „date.timezone“ auf:

date.timezone = Europe/Berlin

konfiguriert, IIS durchgestartet und erneut geprüft. Kein Erfolg – in der phpinfo(); stand die Zeit noch immer auf „Asia/Kuwait“. Also nochmal ab in die PHP.ini und auch fündig geworden:

[WebPIChanges]
date.timezone=Asia/Kuwait

In dem vom Microsoft Web Platform Installer konfigurierten Änderungen beim Deployment vom PHP wurde auch nochmal ganz am Ende der php.ini eine Zeitzone gesetzt.

Diesen Eintrag also raus (habe ja den korrekten Eintrag gesetzt), IIS durchgestartet und es lief.

Hyper-V Requirements via Systeminfo

Bei der systeminfo in der CMD wurde bei Windows 8 und Windows Server 2012 ein ziemlich cooles Feature nachgeschoben. Die letzten vier Zeilen des systeminfo Outputs in der CMD geben bei noch nicht aktivierter Hyper-V Rolle an, wie der Support ist aktuell konfiguriert ist.

Vor der Aktivierung der Hyper-V Rolle:

C:\Users\stefan>systeminfo
[…]
Anforderungen für Hyper-V:
Erweiterungen für den VM-Überwachungsmodus: Ja
Virtualisierung in Firmware aktiviert: Ja
Adressübersetzung der zweiten Ebene: Ja
Datenausführungsverhinderung verfügbar: Ja

C:\Users\stefan>systeminfo
[…]
Hyper-V Requirements:
VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes

Nach der Aktivierung der Hyper-V Rolle:

C:\Users\stefan>systeminfo
[…]
Hyper-V Requirements: A hypervisor has been detected. Features required for  Hyper-V will not be displayed.

C:\Users\stefan>systeminfo
[…]
Anforderungen für Hyper-V: Es wurde ein Hypervisor erkannt.
Features, die für Hyper-V erforderlich sind, werden nicht angezeigt.

Access-Listen und DHCPOFFER

Vorgestern hatte ich ein interessantes Thema, bei dem ein Access-Point mit einer input-address-list und output-address-list auf dem Dot11Radio-Interface bei dem ein Windows Server mit DHCP-Rolle keine IP Adressen an Clients im WLAN verteilt hat.

Der Grund war, dass auf dem Dot11Radio-Interface die identische Access-Liste gebunden, welche keine Broadcasts durchließ. Warum? Der Grund liegt hinter der Idee von den entsprechenden ACL’s. Diese stellen nicht die Richtung dar sondern ob source (input) oder destination (output) Address.

Die Lösung letztendlich war denkbar übersichtlich, zwei verschiedene Access-Listen zu erstellen.

interface Dot11Radio0
! […]
bridge-group 1 input-address-list 700
bridge-group 1 output-address-list 701
! […]
access-list 700 permit 6067.20aa.1234 0000.0000.0000
access-list 700 deny 0000.0000.0000 ffff.ffff.ffff
access-list 701 permit 6067.20aa.1234 0000.0000.0000
access-list 701 permit 0000.0000.0000 0000.0000.0000
access-list 701 permit ffff.ffff.ffff 0000.0000.0000
access-list 701 deny 0000.0000.0000 ffff.ffff.ffff

Übrigens in einer Laborumgebung habe ich das nochmal mit einem Cisco Router als DHCP-Server getestet. Hier hat es auch ohne Broadcastadresse in der zweiten ACL Funktioniert.

Der Grund liegt in der Verteilung des DHCPOFFERS vom DHCP-Server. Windows Server nutzen hier abhängig vom Broadcast Bit im DHCPDISCOBVER Broadcast zur Verteilung, siehe KB169289 (http://support.microsoft.com/kb/169289/en-us).

Da obiges Beispiel im Layer 2 spielt ist die Broadcast- oder Unicast-Implementierung abhängig vom Hersteller.

Weiterführende Infos: http://www.ietf.org/rfc/rfc2131.txt

via CMD schnell prüfen ob ein KB installiert ist.

Oft fragt man sich doch „ist der KB installiert“? Wer schnell mal prüfen muss, ob ein bestimmter KB auf einem System installiert ist geht wie folgt vor.

  1. CMD im Adminmodus (cmd – rechtsklick – Als Admin ausführen)
  2. Dann den Befehl, das Pipe-Symbol „|“ filtert die Ausgabe

wmic qfe list | find „KB2750841“

Ist der KB installiert gibt es dann z.B. folgende Ausgabe (KB, wer hat installiert, wann wurde installiert).

C:\Users\stefan>wmic qfe list | find „KB2750841“
http://support.microsoft.com/?kbid=2750841     CONROE  Update
KB2750841               NT-AUTORITÄT\SYSTEM  11/16/2012
C:\Users\stefan>

WMIC steht für Windows Management Instrumentation Commandline, QFE für Quick Fix Engineering.

Das Ganze ist beispielsweise unwahrscheinlich nützlich wenn man sich eigene Inventarskripte baut oder nur mal schnell eine Info brauch ob der KB drauf ist oder nicht.

WMIC kann natürlich noch weit mehr. Aber dazu ggf. später.