특정 그룹 또는 조직과 만 공유되는 arcgis.com에서 호스팅되는 기능 서비스에 액세스하는 방법


9

내 C # 응용 프로그램에서 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);

애플리케이션에 대한 사용자 로그인 또는 앱 로그인을 설정 하시겠습니까? 또한 응용 프로그램에서 OAuth 2 기반 API를 사용합니까? 토론 링크 : resources.arcgis.com/en/help/arcgis-rest-api/index.html#//…
Baltok

인증에 OAuth 2 기반 API를 사용하고 있지 않습니다. 사용자의 로그인 자격 증명을 전달하여 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

layerUrl에 토큰을 추가하려고했지만 운이 없었습니다. Fiddler 앱을 사용하여 API 또는 네트워크에서 생성되는 URL을 확인했지만 http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServerlayerUrl에 토큰을 추가 한 후에도 네트워크를 통해 전송되는 것을 볼 수 는 없습니다.
WAQ

AGOL의 내 컨텐츠에서 "Open for ArcGIS for Desktop"을 클릭하고 item.pitem 파일의 다운로드를 시작하십시오. 이 파일에서 피처 레이어의 URL을 찾을 수 있습니다. URL에 "? token = <yourtoken> & f = json"을 추가하고 브라우저에서여십시오. 무슨 일인지 말해봐
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 포럼 의이 예제 게시물 은 자바 스크립트 기반이지만 기본적으로 원하는 작업을 수행합니다.

그러나 ESRI의 'ArcObjects for .Net'API (네임 스페이스를 기반으로 사용한다고 말할 수 있음)의 경우 IArcGISSingleSignon.GetToken 메소드를 구현해야합니다. 이 객체의 메소드는 사용자를 ArcGIS Online (AGOL)에 사인하고 토큰을 반환합니다. 작업 공간 팩토리 및 기능 클래스 오브젝트 정의에는 토큰이 필요하지 않지만 보안 AGOL 기능 서비스에 액세스하기 전에 사인온이 발생해야합니다.

마지막으로 API 포인트처럼 IWorkspaceFactory는 더 이상 사용되지 않으며 이제 IWorkspaceFactory2 가 선호되는 인터페이스 개체입니다. 서명은 변경되지 않았지만 백엔드 구현은 변경되었습니다.

GetToken 메서드를 사용하여 싱글 사인온 토큰을 구현 한 후에 C # 애드 인이 AGOL에 올바르게 연결되어 있는지 확인하십시오.


나는 'IArcGISSingleSignOn.GetToken'을 시도하고 나타나는 로그인 대화 상자에 자격 증명을 입력 한 후 생성 된 토큰을 얻었습니다. 그 후에 질문에서와 동일한 코드를 실행했지만 여전히 "인증 토큰 필요"라는 동일한 예외가 발생합니다.
WAQ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.