2010-09-12 15 views
7

Jestem ciekawy, w jaki sposób możemy wysłać token Security z aplikacji WIF, która została już uwierzytelniona w usłudze WCF z włączoną usługą WCF.Jak przekazać Token bezpieczeństwa (roszczeń) do WIF włączyć usługę WCF

Każda pomoc będzie appriciated

+0

Miałam nadzieję, że dostaniesz odpowiedź na to. Jest to domyślny projekt: aplikacja internetowa -> usługa WCF. Deweloperzy .Net są zachęcani do korzystania z WIF, ale sugestie dotyczące implementacji, które widzę, nie mają charakteru prescripitive. –

Odpowiedz

6

Odpowiedź nie jest prosta, ale następujące kroki stanowią „Zalecana wzór” i są udokumentowane w następującym artykule MSDN: Identity Delegation with AD FS 2.0 Step-by-Step Guide

Podsumowując

  1. Umożliwia dostęp aplikacji WWW do specjalnego tokenu (Bootstrap Token), którego można użyć do żądania usług w imieniu użytkownika, który uwierzytelnił się przy użyciu STS, dodając i tem w pliku web.config:

    saveBootstrapTokens="true"

  2. Utwórz nowy zaufania między WCF WIF włączoną obsługę oraz STS tak „wie”, że usługa może działać jako kolejny uwierzytelnionego użytkownika (actsas). Mam nadzieję, że używasz programu ADFS v2, ponieważ wyobrażam sobie, że napisałem cały układ hydrauliczny dla niestandardowego STS, a zachowanie ActsAs nie jest trywialne.

  3. Podczas wywoływania usług WCF utworzyć nowy kanał specjalnie przechodzący token BootStap:

    channel = factory.CreateChannelActingAs(callerToken);

Jestem trochę zaniepokojony wydajności ze względu na wszystkie stworzenia kanału i jak wiele usług WCF i aplikacji internetowych musi rozmawiać z usługą STS.

0

@David Evans - Nie mam reputacji, aby dołączyć do odpowiedzi. Uważam jednak, że ostatni krok jest niepoprawny i może być bardzo mylący, ponieważ można poprawnie przekazać token ładowania początkowego w wywołaniu ActingAs.

Problem polega na tym, że należy podać token ładowania początkowego. Jednak w procesie ustanawiania zaufania ActAs tworzony jest ActAs \ Issued Token. Ten token nie jest tokenem ładowania początkowego. W rzeczywistości potrzebny jest token ładowania początkowego użytkownika, aby utworzyć nowy token, który reprezentuje działanie polegające na odgrywaniu roli Działając jako konkretny uwierzytelniony użytkownik.

Zatem drugim krokiem byłoby utworzenie tokena ActAs (obejmującego wszystko, o czym wspomniałeś). A krok trzeci będzie wywoływać usługę WCF przy użyciu tokena ActAs, a nie token ładowania początkowego.

0

Firma Microsoft zapewnia Transkskskę tożsamości z różnymi przykładami tożsamości za pomocą WIF 4.5. Przykład InvokingViaDelegatedAccess in there demonstrates perfectly the usage of the ActAs- delegation scenario. However, it cost me days to bring the WywołanieViaDelegatedAccess` Przykład Up i Running. Po wykonaniu wielu obejść, w końcu mogłem uruchomić instalację i wykonać ten przykład. Pisałem podręcznik instalacyjny, który można pobrać tutaj:

enter link description here Enjoy))

Przykładem jednak jest uruchomiony na komputerze z systemem Windows 7 VM konieczności Visual Studio 2012 zainstalowany.

To prawda, że ​​musisz zapisać token ładowania początkowego.Po zalogowaniu się do aplikacji internetowej musisz najpierw buforować token, który został wydany z usługi SecurityTokenService. Korzystanie WIF 4,5 to może być wykonane z poleceniem w web.config:

<identityConfiguration saveBootstrapContext="true"> 

WCF ChannelFactory zawiera ponadto różne sposoby (CreateChannelWithActAsToken, CreateChannelWithIssuedToken, WithOnBehalfOfToken) nośne scenariusze delegowania z aplikacji backend do WCF Usługa. Wykorzystując scenariusz ActAs, CreateChannelWithActAsToken wyodrębnia token ładowania początkowego, wysyła token inicjowania do STS, STS tworzy nowy SecurityToken z nowymi (lub skopiowanymi) wartościami roszczenia, następnie usługa backendu jest wywoływana przy użyciu ActAs-SecurityToken. Dzięki tej metodzie nowy ActAs-SecurityToken będzie wydany za każdym razem, gdy zadzwonisz do usługi. Jeśli tego nie zrobisz, CreateChannelWithIssuedToken może być dla ciebie lepszą metodą, ponieważ możesz następnie przechowywać w pamięci podręcznej token w pliku cookie i ponownie używać go do innych połączeń.

/Patric Seiler, programista .net www.itconsulting24.com

Powiązane problemy