特定のグループまたは組織のみと共有されているarcgis.comでホストされている機能サービスにアクセスする方法


9

私のC#アプリケーションで、arcgis.comでホストされているFeatureサービスにアクセスしようとしています。機能サービスはグループまたは組織とのみ共有され、公開されません。クライアントコードでこのサービスにアクセスするにはどうすればよいですか。これは、認証トークンが必要であることを示す例外をスローするクライアントコードです。私はトークンを持っていますが、サービスを使用するために認証されるためにそのトークンを使用する方法がわかりません。これと同じコードは、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
#//…

認証にOAuth 2ベースのAPIを使用していません。ユーザーのログイン資格情報を渡して、GenerateTokenクエリを使用してトークンを生成しています。ログイン後、Arcgis.comにサービスを公開し、グループと共有しました。サービスがパブリックとして共有されていないため、私またはサービスが共有されているグループがこのサービスを利用しようとすると、「認証トークンが必要です」というエラーが表示されます。トークンは持っていますが、そのトークンを使用して安全なサービスを正常に利用する方法を知りません。
WAQ 2014年


@PolyGeo緊急の返信が必要なので、同じ質問のコピーを2か所に投稿しました。それは何らかのルール違反ですか?
WAQ 2014年

複数の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/FeatureServerしましたが、layerUrlでトークンを追加した後でも、ネットワーク経由でのみ送信されているのがわかりません。
WAQ 2014年

AGOLのコンテンツの下にある[ArcGIS for Desktopで開く]をクリックして、item.pitemファイルのダウンロードを開始します。このファイルには、フィーチャレイヤーのURLが含まれています。「?token = <yourtoken>&f = json」をURLに追加して、ブラウザで開きます。何が起こっているのか教えてください。
lele3p 2014年

レイヤーの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"
ましょ

上記のURLとトークンを使用して、ブラウザーでレイヤーを表示できます。Token Authentication required元の質問に投稿されたコードでそれを使用すると例外が発生します:)
WAQ

暗闇での完全な刺し傷-PropertySetに文書化されていないTOKENプロパティがある可能性がありますか?
MC5 2014年

1

以下のリンクを参照してください。プロキシに関する問題があるようです。保護されたサービスにアクセスするには、ユーザー名とパスワードが必要で、実行時にトークンが生成されるコードを記述するだけで、適切に追加する必要があります

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


ユーザー名とパスワードはありますが、generateTokenクエリを使用してトークンを生成しました。私が公開した安全なサービスを取得できません。
WAQ 2014年

1

このGeoNetフォーラムからの投稿例はJavaScriptベースですが、基本的にはあなたがやりたいことを実現します。

ただし、ESRIの 'ArcObjects for .Net' API(名前空間に基づいて使用していることがわかります)の場合は、IArcGISSingleSignon.GetTokenメソッドを実装する必要があります。このオブジェクトのメソッドは、ユーザーをArcGIS Online(AGOL)にサインオンし、トークンを返します。ワークスペースファクトリとfeatureclassオブジェクト定義にはトークンは必要ありませんが、セキュリティで保護されたAGOL機能サービスにアクセスする前にサインオンを行う必要があります。

最後に、APIポイントと同様に、IWorkspaceFactoryは廃止され、IWorkspaceFactory2が優先されるインターフェイスオブジェクトになりました。シグネチャは変更されませんでしたが、バックエンドの実装は変更されました。

GetTokenメソッドを使用してシングルサインオントークンを実装したら、C#アドインがAGOLに正しく接続することを確認するために投稿してください。


「IArcGISSingleSignOn.GetToken」を試してみましたが、表示されるサインインダイアログに資格情報を入力すると、トークンが生成されました。その後、質問と同じコードを実行しましたが、同じ例外「認証トークンが必要です」が引き続き表示されます。
WAQ 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.