Як отримати доступ до послуги Feature, розміщеної на arcgis.com, яка надається лише певним групам чи організаціям


9

У своїй програмі C # я намагаюся отримати доступ до послуги Feature, розміщеної на arcgis.com. Служба функцій надається лише групі чи організації та НЕ є загальнодоступною. Як я можу отримати доступ до цієї послуги в коді клієнта. Ось мій клієнтський код, який містить виняток із заявою, що потрібен маркер автентифікації. У мене є маркер, але не знаю, як використовувати цей маркер для автентифікації для використання сервісу. Цей самий код працює добре для служб, які спільно використовуються як 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);

Ви хочете налаштувати вхід користувачів або вхід до програми для своєї програми? Також ваша програма використовує API на базі OAuth 2? Посилання для обговорення: resource.arcgis.com/en/help/arcgis-rest-api/index.html#//…
Балток

Я не використовую API на основі OAuth 2 для аутентифікації. Я просто генерую маркер за допомогою запиту GenerateToken, передаючи вхідні дані користувача. Після входу в систему я опублікував сервіс на Arcgis.com і поділився цим з групою. Оскільки послугу не надано як загальнодоступну, коли я сам або група, до якої поділяється служба, намагається споживати цю послугу, з’являється помилка «Потрібний маркер автентифікації». У мене є маркер, але я не знаю, як я можу використовувати цей маркер, щоб успішно споживати безпечну послугу.
WAQ

Це було розміщено як пряма копія з stackoverflow.com/questions/26429713/…, але було додано щедрості на обох сайтах
PolyGeo

@PolyGeo Я опублікував копію того ж питання у двох місцях, оскільки мені потрібна термінова відповідь. Це порушення якогось правила чи що?
WAQ

Політика щодо перехресного опублікування на декількох сайтах SO / SE обговорювалася на meta.stackexchange.com/questions/64068/… Однак, розміщуючи щедрість за одне і те ж питання на обох сайтах, я розумію, що їх не можна закрити на будь-якого сайту ( meta.stackexchange.com/questions/14591/… ). Тим не менш, інформування потенційних відповідачів з обох сайтів про питання Q&A з іншого, це може призвести до синергії та швидшого рішення.
PolyGeo

Відповіді:


3

Я намагався додати маркер шаромUrl, але не пощастило. Я використовував додаток Fiddler, щоб побачити, які URL-адреси генеруються API або мережею, але я не бачу, http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServerщо надсилаються по мережі навіть після додавання маркера в слойUrl.
WAQ

На AGOL під моїм вмістом натисніть "Відкрити в ArcGIS для робочого столу" і починайте завантаження файлу item.pitem. У цьому файлі ви можете знайти URL-адресу шару. Додайте "? Token = <yourtoken> & f = json" до URL-адреси та відкрийте його у веб-переглядачі. Скажи мені, що відбувається.
lele3p

У мене є Url шару, який є, "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServerі у мене також створено маркер. давайте припустимо, що маркер abc112asdfkljznxc123123lkjkj23kljтакий повний URL, як "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"І я також пробував з окремими підшарами, як, url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"але не пощастило
WAQ

Я можу переглядати шар у браузері за допомогою URL-адреси та маркера. Це лише те, що я отримую Token Authentication requiredвиняток, коли використовую його в коді, розміщеному в оригінальному запитанні :)
WAQ

загальний удар в темряві - може PropertySet мати незадокументоване властивість TOKEN?
MC5

1

Перейдіть за посиланням нижче, здається, у вас є проблеми з проксі. Для доступу до захищених послуг потрібно мати ім’я користувача та пароль, а також просто написати код, де маркер генерується під час виконання, і вам потрібно просто додати його належним чином

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


У мене є ім’я користувача, пароль та створено маркер за допомогою generateTokenзапиту. Просто не вдається отримати захищені сервіси, які я опублікував.
WAQ

1

Цей приклад публікації з форуму GeoNet базується на JavaScript, але він фактично виконує те, що ви хочете статися.

Однак у випадку API "ArcObjects for .Net" ESRI (який ми можемо сказати, ви використовуєте на основі просторів імен) слід застосувати метод IArcGISSingleSignon.GetToken. Метод цього об'єкта підпише користувача на ArcGIS Online (AGOL) і поверне маркер. Фабрика робочої області та визначення об'єктів функціонального класу не вимагають маркер, але реєстрація повинна відбутися перед тим, як отримати доступ до захищених послуг функцій AGOL.

Нарешті, як точка API, IWorkspaceFactory застарілий, і IWorkspaceFactory2 тепер є кращим об'єктом інтерфейсу. - підписи не змінилися, але реалізація бекенда.

Будь ласка, опублікуйте, щоб підтвердити, що ваша надбудова C # правильно підключається до AGOL, коли ви реалізуєте жетони з одним підписом за допомогою методу GetToken.


Я спробував `IArcGISSingleSignOn.GetToken 'і отримав маркер, згенерований після введення моїх даних у діалогове вікно входу, яке з'явиться. Після цього виконується той самий код, що і в запитанні, але все ж отримується той самий виняток "Потрібний маркер автентифікації".
WAQ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.