ADFS 2.0 i Google Apps

Misja: uwierzytelniać klientów korzystających z Google Apps za pomocą SAML i Active Directory Federation Services.

Niestety Google nie udostępnia Federation Metadata więc trzeba ręcznie skonfigurować Relying Partner Trust.

Opis do tego jest niemalże wszędzie, jednak gdyby ktoś nie mógł tego znaleźć:

Po stronie Google ustawiamy:

  1. Sign-in page URL https://naszadomena.com/adfs/ls  
  2. Sign-out page URL https://naszadomena.com/adfs/ls/?wa=wsignoutcleanup1.0  
  3. Change password URL https://nasza_strona_do_zmiany_hasla.naszadomena.com  

Przy czym ostatnie pole jest nieobowiązkowe, nawet nigdy nie widziałem żeby gdzieś była użyta jego wartość.

Dodatkowo należy zaimportować certyfikat używany przez ADFS do podpisywania tokenów (token-signing) wyciągnięty wcześniej za pomocą konsoli MMC dla ADFS 2.0

Warto też zaznaczyć "Use a domain specific issuer " żeby zapytania przychodziły z adresu  https://www.google.com/a/naszadomena.googleapps.pl/acs zamiast z https://google.com

Po stronie ADFS trzeba dodać nowy Relying Party Trust:

Wybieramy ręczne wpisanie danych

  1. Profil ADFS 2.0
  2. Pomijamy certyfikaty (zostaną użyte domyślne)
  3. Włączamy protokół SAML i jako service URL wpisujemy:  https://www.google.com/a/naszadomena.googleapps.pl/acs 
  4. Jako relying trust identifier podajemy:  https://www.google.com/a/naszadomena.googleapps.pl/acs

Do Relying Party Trust dodajemy Claim rules wysyłający LDAP atrybut e-mail jako Name ID.

I tyle.Powinno działać, no prawie działa bo wylogowanie jest nieprzewidywalne. Raz wylogowuje poprawnie, raz pojawia się komunikat błędu ADFS, innym razem pojawia się błąd na stronie Google. Zero determinizmu, zdarzenia wydają się być całkowicie losowe.

Problem wynika prawdopodbnie z tego, że Google źle przygotowuje zapytanie SAML do wylogowania i parametry są niewłaściwie parsowane. Tudzież ADFS nie do końca jest zgodny ze standardem i nie potrafi wyciągnąć informacji z prawidłowego zapytania generowanego przez Google. W wyniku czego nie udaje się wygasić poprawnie wszystkich cookies, u klienta. Tutaj należy pamiętać, że funkcja wylogowywania w SAML jest opcjonalna :-)

W każdym razie przeładowanie strony https://adfs.naszadomena.pl/adfs/ls/?wa=wsignoutcleanup1.0 bez  dodatkowych parametrów wylogowuje skutecznie.

Jako, że nie udało mi się znaleźć rozwiązania zastosowałem proste obejście polegające na tym, że w przypadku błędu wylogowywania przekierowuję ponownie na stronę wylogowania. Co prawda można się trochę zapętlić ale jak narazie nie udało mi się doprowadzić to takiej sytuacji.

Do pliku error.aspx.cs dodałem (kod jest zależny od wersji językowej serwera ADFS, pewnie można sprawdzać sam kod błędu ale tego nie testowałem)

if (Exception.Message == "MSIS7055: Not all SAML session participants logged out properly. It is recommended to close your browser.")
    {
        Response.Redirect("?wa=wsignoutcleanup1.0");
    }

Zmodyfikowany plik znajduje się załączniku error.aspx.cs

App-V i Office 2010

Gdyby ktoś miał problemy z wirtualizacją pakietu Office 2010 i dostawał błąd typu:

Error 1920. Service 'Office Software Protection Platform' (osppsvc) failed to start.
Verify that you have sufficient privileges to start system services.

to tutaj jest napisane co i jak należy zrobić kb983462

Generalnie sprowadza się do instalacji Microsoft Office 2010 Deployment Kit for App-V na stacjach klienckich.

Nie ułatwiają życia …

VMware out-of-date

Od kilku miesięcy na kilkunastu serwerach co jakiś czas wyskakuje mi taki błąd przy uruchamianiu losowych wirtualnych maszyn vmware.

„You have started VMware Server with an out-of-date copy of the application.”

VMware Server jest najnowszy, są wprowadzone nowe klucze.

Na necie ludzie piszą, że trzeba odinstalować całkowicie vmwara, usunąć klucze, zrobić jeboot, zainstalować na nowo, jeboot, uruchomić VMki.

Czyli mamy downtime kilku serwerów na co najmniej 30 minut zanim wszystko wstanie ponownie :(

U mnie akurat działa sztuczka z usunięciem problematycznej VMki z inventory i dodaniem jej na nowo.

Po tym zabiegu uruchamia się bez błędów.

Warto tego spróbować, może uda się zaoszczędzić trochę czasu.

SCCM Raport Lista modeli komputerów

W SCCM 2007 R2 brakuje raportu który by wyświetlił listę komputerów z nazwą producenta, typem modelu komputera, numerem seryjnym i nazwą usera.

Poniżej raport który robi:

1) tworzymy nowy raport

2) jako Report SQL Statement wklejamy:

SELECT
Distinct
SYS.Netbios_Name0,
SYS.User_Name0,
MOD.Manufacturer0,
MOD.Model0,
BIO.SerialNumber0
FROM v_R_System SYS
JOIN v_GS_COMPUTER_SYSTEM MOD on SYS.ResourceID = MOD.ResourceID
JOIN v_GS_PC_BIOS BIO on SYS.ResourceID = BIO.ResourceID
JOIN v_FullCollectionMembership FCM ON SYS.ResourceID = FCM.ResourceID
WHERE
FCM.CollectionID=@ID
ORDER BY SYS.Netbios_Name0

3) Tworzymy nowego Promta o nazwie ID, zaznaczamy Provide SQL Statement

4) Do Prompt SQL Statement wklejamy:

BEGIN
IF (@__filterwildcard = '')
SELECT DISTINCT CollectionID, Name FROM v_Collection ORDER BY Name
ELSE
SELECT DISTINCT CollectionID, Name FROM v_Collection
WHERE CollectionID like @__filterwildcard
ORDER BY Name
END

Proste i przydatne :-)

Wyciąganie ServiceTag ze sprzętów Della

Sprzęt Dell’a posiada tzw Service Tag, naklejka np pod laptopem, z indywidualnym numerem.

Jest on potrzebny w przypadku dzwonienia do pomocy technicznej lub po prostu do identyfikacji sprzętu.

Okazuje się, że można go też wydobyć zdalnie software’owo bez ruszania tyłka z miejsca.

Windows: wmic bios get serialnumber

Linux: dmidecode -s system-serial-number

Może się komuś przyda…

Ale o co chodzi?

Ta sama strona otwarta w dwóch różnych przeglądarkach. Potęga ciasteczek i ustawień językowych skazuje nas na starszą wersję programu jeśli wejdziemy na stronę złą przeglądarką :-o

Sketch up