วิธีเข้าถึงบริการคุณลักษณะที่โฮสต์บน arcgis.com ซึ่งแบ่งปันกับกลุ่มหรือองค์กรที่เฉพาะเจาะจงเท่านั้น


9

ในแอปพลิเคชัน C # ของฉันฉันพยายามเข้าถึงบริการฟีเจอร์ที่โฮสต์บน arcgis.com บริการคุณลักษณะนี้ใช้ร่วมกันเฉพาะกับกลุ่มหรือองค์กรและไม่เปิดเผยต่อสาธารณะ ฉันจะเข้าถึงบริการนี้ในรหัสลูกค้าของฉันได้อย่างไร นี่คือรหัสลูกค้าของฉันซึ่งแสดงข้อยกเว้นว่าต้องใช้โทเค็นการตรวจสอบสิทธิ์ ฉันมีโทเค็น แต่ไม่รู้ว่าจะใช้โทเค็นนั้นเพื่อรับรองความถูกต้องเพื่อใช้บริการได้อย่างไร รหัสเดียวกันนี้ทำงานได้ดีสำหรับบริการที่ใช้ร่วมกันเป็นสาธารณะ

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

คุณต้องการตั้งค่าการเข้าสู่ระบบของผู้ใช้หรือการเข้าสู่ระบบแอปสำหรับแอปพลิเคชันของคุณหรือไม่? แอปพลิเคชันของคุณใช้ OAuth 2 แบบ API หรือไม่ ลิงก์การอภิปราย: resources.arcgis.com/th/help/arcgis-rest-api/index.html#//…
Baltok

ฉันไม่ได้ใช้ 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/… ) อย่างไรก็ตามด้วยการทำให้ผู้ตอบที่มีศักยภาพจากทั้งสองไซต์รับรู้ถึงคำถามและคำตอบในที่อื่น ๆ อาจนำไปสู่การทำงานร่วมกันและการแก้ปัญหาที่รวดเร็วขึ้น
PolyGeo

คำตอบ:


3

ฉันพยายามต่อโทเค็นด้วยเลเยอร์ Url แต่ก็ไม่มีโชค ฉันใช้แอพ Fiddler เพื่อดูว่า URL ใดที่ถูกสร้างขึ้นโดย API หรือเครือข่าย แต่ฉันไม่เห็นว่าhttp://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServerถูกส่งผ่านเครือข่ายเท่านั้นแม้จะต่อท้ายโทเค็นด้วย layerUrl
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"และฉันก็ลองกับ sublayers แต่ละอันเหมือนกัน url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"แต่ไม่มีโชค
WAQ

ฉันสามารถดูเลเยอร์ในเบราว์เซอร์โดยใช้ URL และโทเค็นด้านบน เพียงแค่ว่ามันฉันได้รับToken Authentication requiredข้อยกเว้นเมื่อฉันใช้มันในรหัสที่ถูกโพสต์ในคำถามเดิม :)
WAQ

ยอดรวมในที่มืด - PropertySet อาจมีคุณสมบัติโทเค็นที่ไม่มีเอกสารหรือไม่
MC5

1

โปรดอ้างอิงลิงค์ด้านล่างดูเหมือนว่าคุณมีปัญหาพร็อกซี สำหรับการเข้าถึงบริการที่ปลอดภัยคุณต้องมีชื่อผู้ใช้และรหัสผ่านและเพียงแค่เขียนรหัสที่โทเค็นถูกสร้างขึ้นที่เวลาทำงานและคุณเพียงแค่ต้องผนวกมันอย่างถูกต้อง

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


ฉันมีชื่อผู้ใช้รหัสผ่านและสร้างโทเค็นโดยใช้generateTokenแบบสอบถาม ไม่สามารถเรียกค้นบริการรักษาความปลอดภัยที่ฉันได้เผยแพร่
WAQ

1

นี้โพสต์ตัวอย่างจากฟอรั่ม Geonet เป็นจาวาสคริปต์ตาม แต่มันเป็นหลักสำเร็จในสิ่งที่คุณต้องการให้เกิดขึ้น

อย่างไรก็ตามสำหรับกรณีของ 'ArcObjects for .Net' API ของ ESRI (ซึ่งเราสามารถบอกได้ว่าคุณกำลังใช้งานตาม Namespaces) คุณควรใช้วิธี IArcGISSingleSignon.GetToken วิธีการของวัตถุนี้จะลงนามในผู้ใช้กับ ArcGIS Online (AGOL) และส่งกลับโทเค็น โรงงานเวิร์กสเปซและนิยามอ็อบเจ็กต์คลาส feature ไม่ต้องการโทเค็น แต่การลงชื่อเข้าใช้จะต้องเกิดขึ้นก่อนที่จะเข้าถึงบริการฟีเจอร์ AGOL ที่ปลอดภัย

สุดท้ายเช่นเดียวกับจุด API, IWorkspaceFactory ล้าสมัยและIWorkspaceFactory2เป็นวัตถุส่วนต่อประสานที่ต้องการ - ลายเซ็นไม่เปลี่ยนแปลง แต่การใช้งานแบ็กเอนด์ก็ทำได้

กรุณาโพสต์เพื่อยืนยันการเพิ่ม C # ของคุณเชื่อมต่ออย่างถูกต้องกับ AGOL เมื่อคุณใช้โทเค็นการลงชื่อเข้าใช้ครั้งเดียวโดยใช้วิธี GetToken


ฉันลองใช้ `IArcGISSingleSignOn.GetToken 'และได้รับโทเค็นที่สร้างขึ้นหลังจากป้อนข้อมูลประจำตัวของฉันไปยังกล่องโต้ตอบลงชื่อเข้าใช้ที่ปรากฏขึ้น หลังจากนั้นก็ดำเนินการรหัสเดียวกันในคำถาม แต่ยังคงได้รับข้อยกเว้นเดียวกัน "ต้องใช้โทเค็นการตรวจสอบสิทธิ์"
WAQ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.