So greifen Sie auf einen auf arcgis.com gehosteten Feature-Service zu, der nur für bestimmte Gruppen oder Organisationen freigegeben ist


9

In meiner C # -Anwendung versuche ich, auf einen Feature-Service zuzugreifen, der auf arcgis.com gehostet wird. Der Feature-Service wird nur für eine Gruppe oder Organisation freigegeben und ist NICHT öffentlich. Wie kann ich in meinem Client-Code auf diesen Service zugreifen? Hier ist mein Client-Code, der eine Ausnahme auslöst, die das erforderliche Authentifizierungstoken angibt. Ich habe das Token, weiß aber nicht, wie ich dieses Token verwenden soll, um mich für die Nutzung des Dienstes zu authentifizieren. Dieser Code funktioniert auch für Dienste, die als PUBLIC freigegeben sind.

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

Möchten Sie Benutzeranmeldungen oder App-Anmeldungen für Ihre Anwendung einrichten? Verwendet Ihre Anwendung auch OAuth 2-basierte APIs? Diskussionslink: resources.arcgis.com/de/help/arcgis-rest-api/index.html#//…
Baltok

Ich verwende keine OAuth 2-basierte API zur Authentifizierung. Ich generiere einfach ein Token mithilfe der GenerateToken-Abfrage, indem ich die Anmeldeinformationen des Benutzers übergebe. Nach dem Anmelden habe ich einen Dienst auf Arcgis.com veröffentlicht und diesen für eine Gruppe freigegeben. Da der Dienst nicht als öffentlich freigegeben wird, wird der Fehler "Authentifizierungstoken erforderlich" angezeigt, wenn ich selbst oder eine Gruppe, für die der Dienst freigegeben ist, versucht, diesen Dienst zu nutzen. Ich habe das Token, aber ich weiß nicht, wie ich dieses Token verwenden kann, um den sicheren Dienst erfolgreich zu nutzen.
WAQ

Dies wurde als direkte Kopie von stackoverflow.com/questions/26429713/… veröffentlicht, aber auf beiden Websites wurde ein Kopfgeld hinzugefügt
PolyGeo

@PolyGeo Ich habe an zwei Stellen eine Kopie derselben Frage gepostet, da ich dringend eine Antwort benötige. Verstößt das gegen eine Regel oder was?
WAQ

Die Richtlinie zum Cross-Posting auf mehrere SO / SE-Sites wurde unter meta.stackexchange.com/questions/64068/… erörtert. Wenn Sie jedoch an beiden Sites dieselbe Frage mit derselben Prämie versehen, können sie meines Erachtens nicht geschlossen werden jede Site ( meta.stackexchange.com/questions/14591/… ). Wenn potenzielle Antwortgeber von beiden Standorten auf die Fragen und Antworten auf der anderen Seite aufmerksam gemacht werden, kann dies zu Synergien und einer schnelleren Lösung führen.
PolyGeo

Antworten:


3

Ich habe versucht, das Token an die layerUrl anzuhängen, hatte aber kein Glück. Ich habe die Fiddler-App verwendet, um zu sehen, welche URLs von der API oder dem Netzwerk generiert werden, aber ich sehe nicht, dass sie nur http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServerüber das Netzwerk gesendet werden, selbst nachdem das Token an die LayerUrl angehängt wurde.
WAQ

Klicken Sie unter AGOL unter "Inhalt" auf "In ArcGIS for Desktop öffnen" und starten Sie den Download der Datei item.pitem. In dieser Datei finden Sie die URL des Feature-Layers. Fügen Sie der URL "? Token = <IhrToken> & f = json" hinzu und öffnen Sie sie in einem Browser. Sag mir, was passiert.
Lele3p

Ich habe die URL der Ebene, die ist, "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServerund ich habe auch das Token generiert. Nehmen wir an, Token ist abc112asdfkljznxc123123lkjkj23kljso vollständig. URL ist wie "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"Und ich habe es auch mit einzelnen Unterschichten versucht, url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"aber kein Glück
WAQ

Ich kann die Ebene im Browser mithilfe der obigen URL und des obigen Tokens anzeigen. Es ist nur so, dass ich eine Token Authentication requiredAusnahme
bekomme

totaler Stich in die Dunkelheit - könnte das PropertySet eine undokumentierte TOKEN-Eigenschaft haben?
MC5

1

Bitte verweisen Sie auf den folgenden Link, anscheinend haben Sie ein Proxy-Problem. Für den Zugriff auf gesicherte Dienste benötigen Sie einen Benutzernamen und ein Kennwort. Schreiben Sie einfach einen Code, in dem das Token zur Laufzeit generiert wird, und fügen Sie es nur ordnungsgemäß an

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


Ich habe den Benutzernamen, das Passwort und habe das Token mithilfe einer generateTokenAbfrage generiert . Ich kann die von mir veröffentlichten sicheren Dienste einfach nicht abrufen.
WAQ

1

Dieser Beispielbeitrag aus dem GeoNet-Forum basiert auf Javascript, erreicht jedoch im Wesentlichen das, was Sie möchten.

Für den Fall der ESRI-API 'ArcObjects for .Net' (die Sie anhand der Namespaces verwenden können) sollten Sie jedoch die IArcGISSingleSignon.GetToken-Methode implementieren. Die Methode dieses Objekts meldet einen Benutzer bei ArcGIS Online (AGOL) an und gibt ein Token zurück. Für die Workspace Factory und die Objektdefinitionen der Feature-Class ist das Token nicht erforderlich. Die Anmeldung muss jedoch erfolgen, bevor auf gesicherte AGOL-Feature-Services zugegriffen werden kann.

Schließlich ist IWorkspaceFactory nur als API-Punkt veraltet und IWorkspaceFactory2 ist jetzt das bevorzugte Schnittstellenobjekt. - Die Signaturen haben sich nicht geändert, die Backend-Implementierungen jedoch.

Bitte posten Sie, um zu bestätigen, dass Ihr C # -Add-In eine korrekte Verbindung zu AGOL herstellt, sobald Sie Single-Signon-Token mithilfe der GetToken-Methode implementiert haben.


Ich habe "IArcGISSingleSignOn.GetToken" ausprobiert und das Token generiert, nachdem ich meine Anmeldeinformationen in das angezeigte Anmeldedialogfeld eingegeben habe. Anschließend wurde derselbe Code wie in der Frage ausgeführt, es wurde jedoch immer noch die gleiche Ausnahme "Authentifizierungstoken erforderlich" angezeigt.
WAQ
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.