Aktualnie próbuję używać przepływu User-Agent OAuth 2.0 z aplikacją C# klienta i mam pewne niejasności związane z przekierowaniem URI.OAuth User-Agent Flow z aplikacją pulpitu C#
Ponieważ pracuję z aplikacją klienta, nie mogę dostarczyć standardowego przekierowania do serwera WWW. Jednak według osób, z którymi próbuję się uwierzytelnić (Salesforce, w tym przypadku), User-Agent Flow jest właściwym rozwiązaniem dla aplikacji klienta.
Moje pytanie brzmi, co mogę zrobić, aby złapać token dostępu w tej sytuacji? Najwyraźniej mogę utworzyć "lokalny zasób dostępny dla klienta", ale nie jestem zaznajomiony z mechaniką stojącą za tym i nie mogę znaleźć żadnych zasobów na ten temat (częściowo dlatego, że nie wiem, czego szukać).
Wszelkie wskazówki dotyczące tego, gdzie powinienem zacząć szukać, byłyby bardzo mile widziane.
Edycja: Niektóre więcej kopania wykazała następujące pytanie stackoverflow:
How do I develop against OAuth locally?
robię kilka śledztwo z tym, co sugeruje, ale wszelkie inne sugestie byłyby świetne.
Edycja: Niektóre Wyszukiwanie ujawnił ten artykuł:
http://sarangasl.blogspot.com/2010/09/create-simple-web-service-in-visual.html
nadal czuje jakbym grzebie się w ciemności bez zrozumienia większy obraz, ale wierzę, że muszę skonfiguruj lokalną usługę sieciową za pomocą localhost i wskaż tam mój przekierowy URI. Następnie skorzystam z mojej usługi internetowej, aby rozwinąć odpowiedź z serwera OAuth i odpowiednio zareagować na moją aplikację. Więcej aktualizacji, które przyjdą.
Ooookay. Z tego, co udało mi się zebrać, muszę skonfigurować lokalną usługę sieciową, która będzie dostarczać jako callback dla OAuth. Muszę osobiście wysłuchać tej usługi internetowej i złapać wywołanie zwrotne, aby przekazać ją do mojej aplikacji. Jednak domyślna usługa sieciowa ASP.NET dostarczona przez VS2010 nie obsługuje parametrów URL, tylko wywołań API, więc najwyraźniej potrzebuję użyć zestawu startowego WCF Rest.
Jestem całkowicie obcy temu wszystkiemu, więc wszelkie wskazówki będą w tym momencie wybawieniem. Ogólnie rzecz biorąc, myślę, że skonfiguruję lokalną usługę WCF Rest, dostarczam lokalny URI do OAuth jako wywołania zwrotnego, a następnie przechwytuję adres URL wywołania zwrotnego za pomocą usługi Rest. Następnie analizuję adres URL i wyodrębniam token dostępu. W tym momencie moja aplikacja żąda tokenu dostępu lub moja usługa internetowa może "przekazać" token do mojej aplikacji? Tj. Gdzie powinno znajdować się miejsce kontroli?
To byłaby opcja. Ale bądź ostrożny: użytkownik może wykorzystać niektóre sztuczki w przeglądarce WebBrowser, takie jak przechodzenie do przodu i do tyłu w historii przeglądarki, odświeżanie strony, limity czasu, awaria sieci. Będziesz musiał obsłużyć wszystkie kody błędów HTTP + wszystkie paskudne sztuczki osadzone w przeglądarce. Powodzenia :) –
Plus rozważmy interfejs użytkownika Twojej aplikacji, który prawdopodobnie będzie inny od tego proponowanego przez Salesforce - i nie możesz zmienić swoich ustawień domyślnych, ponieważ nie masz nad nim kontroli. –
Ugh, masz rację. Będę musiał następnie przyjrzeć się bezpieczeństwu wbudowanych przeglądarek. Jeśli chodzi o interfejs użytkownika, moja aplikacja jest procesem działającym w tle, który generuje wyskakujące okienka na niektórych zdarzeniach, więc uwierzytelnianie jest wymagane tylko raz po uruchomieniu aplikacji (zwykle raz dziennie, rano). Dzięki za porady jednak zapomniałem o lukach w zabezpieczeniach, które mogłyby zostać otwarte dzięki osadzonej instancji IE. – sichinumi