Jak uzyskać dostęp do usługi Feature Hosted na arcgis.com, która jest udostępniana tylko określonym grupom lub organizacjom


9

W mojej aplikacji C # próbuję uzyskać dostęp do usługi Feature, która jest hostowana na arcgis.com. Usługa funkcji jest udostępniana tylko grupie lub organizacji i NIE jest publiczna. Jak mogę uzyskać dostęp do tej usługi w kodzie mojego klienta? Oto mój kod klienta, który zgłasza wyjątek informujący, że wymagany jest token uwierzytelnienia. Mam token, ale nie wiem, jak użyć tego tokena do uwierzytelnienia w celu korzystania z usługi. Ten sam kod działa poprawnie w przypadku usług udostępnianych jako PUBLIC.

   IPropertySet sipPS = new PropertySet();
    sipPS.SetProperty("DATABASE", layerUrl);
    IWorkspaceFactory sipWSF = (IWorkspaceFactory)new ESRI.ArcGIS.Carto.FeatureServiceWorkspaceFactory();
    IWorkspace sipWS = sipWSF.Open(sipPS, 0);
    IFeatureWorkspace sipFWS = (IFeatureWorkspace)sipWS;
    IGroupLayer grpLayer = new GroupLayerClass();
    grpLayer.Name = Constants.ArcGISOnlineGroupLayerName;
    IFeatureClass sipFC = sipFWS.OpenFeatureClass("0");
    IFeatureLayer fl = new FeatureLayerClass();
    fl.Name = featureLayerName;
    fl.FeatureClass = sipFC;
    grpLayer.Add(fl as ILayer);

Czy chcesz skonfigurować dane logowania użytkownika lub logowania aplikacji? Ponadto, czy Twoja aplikacja korzysta z interfejsów API opartych na OAuth 2? Link do dyskusji: resources.arcgis.com/en/help/arcgis-rest-api/index.html#//…
Baltok

Nie używam interfejsu API opartego na OAuth 2 do uwierzytelniania. Po prostu generuję token za pomocą zapytania GenerateToken, przekazując dane logowania użytkownika. Po zalogowaniu opublikowałem serwis na Arcgis.com i udostępniłem go grupie. Ponieważ usługa nie jest udostępniana jako publiczna, kiedy ja lub grupa, której usługa jest udostępniana, próbuję skorzystać z tej usługi, pojawia się błąd „Wymagany token uwierzytelnienia”. Mam token, ale nie wiem, jak mogę go użyć, aby pomyślnie korzystać z bezpiecznej usługi.
WAQ

Zostało to opublikowane jako bezpośredni egzemplarz ze stackoverflow.com/questions/26429713/…, ale dodano nagrodę w obu witrynach
PolyGeo

@PolyGeo Wysłałem kopię tego samego pytania w dwóch miejscach, ponieważ potrzebuję pilnej odpowiedzi. Czy to naruszenie jakiejś reguły czy co?
WAQ

Zasady dotyczące wysyłania postów do wielu witryn SO / SE zostały omówione na stronie meta.stackexchange.com/questions/64068/... Jednakże, przyznając nagrodę za to samo pytanie w obu witrynach, rozumiem, że nie można ich zamknąć obie strony ( meta.stackexchange.com/questions/14591/… ). Niemniej jednak poinformowanie potencjalnych respondentów z obu stron o pytaniach i odpowiedziach z drugiej może doprowadzić do synergii i szybszego rozwiązania.
PolyGeo

Odpowiedzi:


3

Próbowałem dołączyć token do warstwyUrl, ale nie miałem szczęścia. Użyłem aplikacji Fiddler, aby zobaczyć, jakie adresy URL są generowane przez interfejs API lub sieć, ale nie widzę, że http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServersą wysyłane tylko przez sieć, nawet po dodaniu tokena za pomocą warstwyUrl.
WAQ

W AGOL, pod moją zawartością kliknij „Otwórz w ArcGIS na pulpicie” i rozpocznij pobieranie pliku item.pitem. W tym pliku można znaleźć adres URL warstwy obiektów. Dodaj „? Token = <yourtoken> & f = json” do adresu URL i otwórz go w przeglądarce. Powiedz mi co się dzieje.
lele3p

Mam adres URL warstwy, który jest "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServeri mam również wygenerowany token. załóżmy, że token jest abc112asdfkljznxc123123lkjkj23kljtak kompletny, że adres URL jest podobny. "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"Próbowałem też z pojedynczymi podwarstwami, url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"ale bez powodzenia
WAQ

Jestem w stanie wyświetlić warstwę w przeglądarce za pomocą powyższego adresu URL i tokena. Po prostu dostaję Token Authentication requiredwyjątek, gdy używam go w kodzie opublikowanym w pierwotnym pytaniu :)
WAQ

całkowite dźgnięcie w ciemności - czy PropertySet może mieć nieudokumentowaną właściwość TOKEN?
MC5

1

Zapoznaj się z poniższym linkiem, wygląda na to, że masz problem z serwerem proxy. Aby uzyskać dostęp do zabezpieczonych usług, musisz mieć nazwę użytkownika i hasło, po prostu napisz kod, w którym token jest generowany w czasie wykonywania, i po prostu musisz go poprawnie dołączyć

http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//0048000000sv000000


Mam nazwę użytkownika, hasło i wygenerowałem token za pomocą generateTokenzapytania. Po prostu nie mogę odzyskać bezpiecznych usług, które opublikowałem.
WAQ

1

Ten przykładowy post z forum GeoNet jest oparty na javascript, ale zasadniczo realizuje to, co chcesz zrobić.

Jednak w przypadku API ESRI „ArcObjects for .Net” (które możemy powiedzieć, że używasz na podstawie przestrzeni nazw) powinieneś zaimplementować metodę IArcGISSingleSignon.GetToken. Metoda tego obiektu zaloguje użytkownika do ArcGIS Online (AGOL) i zwróci token. Fabryka obszaru roboczego i definicje obiektów klasy obiektów nie wymagają tokena, ale logowanie musi nastąpić przed uzyskaniem dostępu do zabezpieczonych usług funkcji AGOL.

Wreszcie, podobnie jak punkt API, IWorkspaceFactory jest przestarzały, a IWorkspaceFactory2 jest teraz preferowanym obiektem interfejsu. - sygnatury nie uległy zmianie, ale implementacje backendu uległy zmianie.

Opublikuj, aby potwierdzić, że Twój dodatek C # poprawnie łączy się z AGOL po wdrożeniu tokenów jednokrotnego logowania przy użyciu metody GetToken.


Próbowałem „IArcGISSingleSignOn.GetToken” i otrzymałem token wygenerowany po wprowadzeniu moich danych uwierzytelniających w wyświetlonym oknie dialogowym logowania. Następnie wykonał ten sam kod, co w pytaniu, ale wciąż otrzymywał ten sam wyjątek „Wymagany token uwierzytelnienia”.
WAQ
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.