2009-07-08 12 views
6

Szukam wskazówek na temat najlepszego sposobu uwierzytelnienia się w mojej witrynie sieci Web. Obecnie mam standardową usługę WebService na .NET 3.5 i witrynę MVC, która znajduje się na szczycie tej usługi WebService.Używanie OpenID z usługą WebService: Najlepszy sposób uwierzytelnienia?

Witryna MVC korzysta z OpenID do uwierzytelniania użytkowników, a podczas fazy projektowania po prostu przekazujemy identyfikator użytkownika OpenID Claimed do usługi WebService w celu uwierzytelnienia. Oczywiście nie jest to to, co udostępnimy klientowi po uruchomieniu.

Moje pytanie brzmi następująco: Jaki jest najlepszy sposób uwierzytelnienia w usłudze WebService?

Niektóre z interfejsów API, w które grałem używają tokenów uwierzytelniania. Innym pomysłem było, aby po połączeniu z usługą WebService przekazać klientowi klucz szyfrujący, który mógłby wykorzystać do wszystkich transferów.

Myślę tutaj głośno, i znowu, każda pomoc jest bardzo doceniana! Dzięki!

...

UPDATE: Teraz ja stworzyliśmy niestandardowy SoapAuthenticationHeader który ma właściwość OpenIdURL. Jest to używane we wszystkich wezwaniach serwisowych do uwierzytelnienia użytkownika. Problem jest dwojaki:

  1. Jeśli haker wiedział OpenIdURL użytkownika, mogą łatwo uzyskać dostęp do usługi WebService.
  2. OpenIdURL jest obecnie przekazywany jako zwykły tekst.

Więc mogę przekazać klucz szyfrowania do klienta po podłączeniu do WebService i mieć klienta zaszyfrować OpenIdURL w nagłówku SoapAuthentication. Ale nie jestem pewien, jak najlepiej go o tym, że ...

+0

Kiedy mówisz „standard serwis internetowy” masz na myśli usługi ASMX starszych lub używasz WCF? –

+0

Jest to zbliżone do tego, na co czekam, ale byłoby wspaniale, gdyby ktoś mógł to wyjaśnić nieco dalej. http://stackoverflow.com/questions/544388/openid-authentication-and-api-access –

+0

Używam standardowej usługi sieci Web ASMX, a MVC uzyskuje dostęp do usługi WebService jako odniesienie do usługi (co, jak myślę, jest funkcją WCF obwoluta?). –

Odpowiedz

3

Czasami warto spojrzeć na OAuth:

http://oauth.net/

(Użyj http://oauth.net/code/ do kodowania.)

Jak to jest specjalnie dostosowane do tego scenariusza (Open ID nie jest, naprawdę).

Jest jeszcze inna kwestia dotycząca SA, która pyta o najlepszy sposób, aby zapewnić usługę internetową i otwórz ID i OAuth oba omawiane:

Web Service Authentication using OpenID

+0

Kiedy mówisz "ten scenariusz", do którego się odnosisz? Usługi ASMX? –

+0

Dzięki, to wskazało mi właściwy kierunek. Chcę zobaczyć, co pozostała część społeczności musi dzielić, zanim uznam to za odpowiedź. Chociaż nie potrzebuję wszystkich funkcji oferowanych przez protokół OAuth, strona protokołu pracy protokołu oferuje wspaniałe informacje o Żetonach żądań i tokenach dostępu. –

+0

@John Saunders: Mam na myśli Open ID vs OAuth, nie tak naprawdę ASMX vs WS- * web services. Otwarty identyfikator nie jest przeznaczony do użytku z interfejsami API, a OAuth to. – casperOne

0

ASMX usług internetowych (które Microsoft teraz uważa się "dziedzictwo") nie mają możliwości korzystania z OpenID do uwierzytelniania. Mogą używać tylko tego, co zapewnia im IIS. Możesz dodać rozszerzenie SoapExtension, które będzie dla nich uwierzytelnianie OpenID, ale nie będę tam spędzać czasu.

Nie wiem wystarczająco dużo o OpenID, aby mieć pewność, ale podejrzewam, że można go zintegrować z WCF za pomocą zabezpieczeń federacyjnych. Jestem pewien, że ktoś inny odpowie na te szczegóły.

+0

Moje przeprosiny. W tej chwili utworzyłem niestandardowy SoapAuthenticationHeader, który ma właściwość OpenIdURL. Jest to używane we wszystkich wezwaniach serwisowych do uwierzytelnienia użytkownika. –

+0

Czy mógłbyś zaktualizować swoje pytanie tymi informacjami? W szczególności, jeśli masz ten nagłówek, czego więcej szukasz? –

+0

Co, "dziedzictwo"? Och, Microsft ... ASMX WebServices są świetne! :) –

0

Nie jest to odpowiedź, ale nie mogą dodawać komentarzy ...

Mówisz „Mam standardową WebService na .NET 3.5 oraz na stronie internetowej MVC, który znajduje się na górze tej WebService ".

Mogę być daleko poza bazą tutaj, ale język oznacza, że ​​ci dwaj siedzą na tym samym serwerze. Jeśli tak, dlaczego nie możesz po prostu udostępnić bazy danych użytkowników i tokena cookie?

James

+0

Mogą one, ale nie muszą, znajdować się na tym samym serwerze. Będą przypadki, w których oba się zdarzają. –

Powiązane problemy