Come accedere a un servizio di funzionalità ospitato su arcgis.com che è condiviso solo con determinati gruppi o organizzazioni


9

Nella mia applicazione C #, sto provando ad accedere a un servizio Feature ospitato su arcgis.com. Il servizio funzionalità è condiviso solo con un gruppo o un'organizzazione e NON è pubblico. Come posso accedere a questo servizio nel mio codice cliente. Ecco il mio codice client che genera un'eccezione che dice il token di autenticazione richiesto. Ho il token ma non so come utilizzare quel token per essere autenticato per utilizzare il servizio. Questo stesso codice funziona bene per i servizi condivisi come PUBBLICO.

   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);

Desideri configurare accessi utente o accessi app per la tua applicazione? Inoltre, l'applicazione utilizza API basate su OAuth 2? Link di discussione: resources.arcgis.com/en/help/arcgis-rest-api/index.html#//…
Baltok

Non sto usando API basate su OAuth 2 per l'autenticazione. Sto semplicemente generando un token utilizzando la query GenerateToken passando le credenziali di accesso dell'utente. Dopo aver effettuato l'accesso, ho pubblicato un servizio su Arcgis.com e l'ho condiviso con un gruppo. Poiché il servizio non è condiviso come Pubblico, quando io stesso, o gruppo a cui è condiviso il servizio, tenta di utilizzare questo servizio, viene visualizzato l'errore "Token di autenticazione richiesto". Ho il token ma non so come posso usare quel token per utilizzare con successo il servizio sicuro.
WAQ,

Questo è stato inviato come copia diretta da stackoverflow.com/questions/26429713/… ma è stata aggiunta una taglia su entrambi i siti
PolyGeo

@PolyGeo Ho pubblicato una copia della stessa domanda in due punti perché ho bisogno di una risposta urgente. È una violazione di qualche regola o cosa?
WAQ,

La politica sul cross-posting su più siti SO / SE è stata discussa su meta.stackexchange.com/questions/64068/… Tuttavia, ponendo una taglia sulla stessa domanda in entrambi i siti, la mia comprensione è che non possono essere chiusi su entrambi i siti ( meta.stackexchange.com/questions/14591/… ). Tuttavia, sensibilizzando i potenziali rispondenti di entrambi i siti sull'altro, si possono creare sinergie e una soluzione più rapida.
PolyGeo

Risposte:


3

Ho provato ad aggiungere il token con layerUrl, ma non ho avuto fortuna. Ho usato l'app Fiddler per vedere quali URL vengono generati dall'API o dalla rete, ma non vedo che http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServervengano inviati solo sulla rete anche dopo aver aggiunto il token con layerUrl.
WAQ,

Su AGOL, sotto i miei contenuti, fare clic su "Apri in ArcGIS per desktop" e avviare il download del file item.pitem. In questo file puoi trovare l'URL del feature layer. Aggiungi "? Token = <yourtoken> & f = json" all'URL e aprilo in un browser. Dimmi cosa sta succedendo.
lele3p,

Ho l'URL del layer che è "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServere ho anche il token generato. supponiamo che il token sia abc112asdfkljznxc123123lkjkj23kljcosì completo l'URL è come "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"E ho anche provato con singoli sublayer come url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"ma senza fortuna
WAQ

Sono in grado di visualizzare il livello nel browser usando sopra url e token. È solo che sto ricevendo Token Authentication requiredun'eccezione quando lo uso nel codice pubblicato nella domanda originale :)
WAQ,

pugnalata totale al buio: il PropertySet potrebbe avere una proprietà TOKEN non documentata?
MC5,

1

Si prega di fare riferimento al seguente link, sembra che tu abbia qualche problema di proxy. Per accedere a servizi sicuri è necessario disporre di nome utente e password e scrivere semplicemente un codice in cui il token viene generato in fase di esecuzione e è sufficiente accodarlo correttamente

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


Ho il nome utente, la password e ho generato il token usando la generateTokenquery. Non riesco proprio a recuperare i servizi sicuri che ho pubblicato.
WAQ,

1

Questo post di esempio dal forum GeoNet è basato su JavaScript, ma essenzialmente realizza ciò che vuoi che accada.

Tuttavia, nel caso dell'API "ArcObjects for .Net" di ESRI (che possiamo dire che stai usando in base agli spazi dei nomi) devi implementare il metodo IArcGISSingleSignon.GetToken. Il metodo di questo oggetto collegherà un utente ad ArcGIS Online (AGOL) e restituirà un token. La fabbrica dello spazio di lavoro e le definizioni degli oggetti featureclass non richiedono il token, ma l'accesso deve avvenire prima di accedere ai servizi di funzionalità AGOL protetti.

Infine, proprio come punto API, IWorkspaceFactory è obsoleto e IWorkspaceFactory2 è ora l'oggetto di interfaccia preferito. Le firme non sono cambiate, ma lo sono state le implementazioni del backend.

Pubblica il messaggio per confermare che il componente aggiuntivo C # si connetta correttamente ad AGOL una volta implementati i token a segno singolo utilizzando il metodo GetToken


Ho provato `IArcGISSingleSignOn.GetToken 'e ho ottenuto il token generato dopo aver immesso le mie credenziali nella finestra di accesso che appare. Successivamente ha eseguito lo stesso codice della domanda, ottenendo comunque la stessa eccezione "Token di autenticazione richiesto".
WAQ,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.