WCF アプリケーションで PingOne のデータ の OData サービスを公開

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
この記事では、WCF サービスアプリケーションを開発してPingOne のデータの OData フィードを生成する方法を解説します。

CData ADO.NET Provider for PingOne を使用すると、Windows Communication Foundation(WCF)フレームワークを活用してサービス指向アプリケーションを素早く開発し、PingOne のデータを OData コンシューマーに提供できます。この記事では、接続用の Entity Data Model を作成し、WCF Data Service を構成して OData サービスを公開する方法を解説します。公開したフィードは、Power Pivot や CData ADO.NET Provider for OData を使用するアプリケーションなど、さまざまな OData クライアントから利用できます。

OData サービスの作成

以下の手順で、OData 経由でPingOne のデータへの接続を提供する WCF サービスアプリケーションを作成します。

  1. Visual Studio を開き、新しいプロジェクトを作成します。WCF Service Application テンプレートを選択します。
  2. 自動生成された IService.cs と Service1.svc を削除します。
  3. Entity Framework 6 をインストールします:

    Visual Studio のパッケージマネージャーコンソールを使用して、最新バージョンの Entity Framework をインストールします。以下のコマンドを実行すると、Entity Framework が自動的にダウンロード・インストールされます。

    Install-Package EntityFramework
  4. Entity Framework プロバイダーを登録します:
    1. App.config または Web.config ファイルの "providers" セクションに、以下のプロバイダーエントリを追加します。Entity Framework のインストールが成功していれば、このセクションはすでに存在しているはずです。
      <configuration>
      ...
      <entityFramework>
        <providers>
          ...
          <provider invariantName="System.Data.CData.PingOne" type="System.Data.CData.PingOne.PingOneProviderServices, System.Data.CData.PingOne.Entities.EF6" />
        </providers>
      </entityFramework>
      </configuration>
    2. インストールディレクトリの lib/4.0 にある System.Data.CData.PingOne.Entities.dll への参照を追加します。
    3. プロジェクトをビルドして、EF6 のセットアップを完了します。
  5. Project -> Add New Item -> ADO.NET Entity Data Model をクリックします。
  6. 表示される Entity Data Model ウィザードで、'EF Designer from Database' オプションを選択します。
  7. Choose Your Connection ダイアログが表示されたら、New Connection をクリックします。
  8. Connection properties ダイアログで、CData PingOne Data Source を選択し、必要な認証情報を入力します。

    一般的な接続文字列は以下のとおりです:

    AuthScheme=OAuth;WorkerAppEnvironmentId=eebc33a8-xxxx-4f3a-yyyy-d3e5262fd49e;Region=NA;OAuthClientId=client_id;OAuthClientSecret=client_secret;

    PingOne に接続するには以下のプロパティを設定します。

    • Region:自身のPingOne 組織のデータがホスティングされている地域。
    • AuthScheme:PingOne に接続する際に使用する認証の種類。
    • WorkerAppEnvironmentId (デフォルトのPingOne ドメインを使用する場合に必要)、またはAuthorizationServerURL のいずれかで、下で説明するように設定します。

    WorkerAppEnvironmentId の設定

    WorkerAppEnvironmentId は、Worker アプリケーションが存在するPingOne 環境のID です。 このパラメータは、環境がデフォルトのPingOne ドメイン(auth.pingone)を利用している場合のみ使用されます。 これは、ヘルプドキュメントカスタムOAuth アプリケーションの作成で説明するように、PingOne への認証に使用するカスタムOAuth アプリケーションを作成した後に設定します。

    はじめに、このプロパティの値を見つけます。

    1. 自身のPingOne 組織のホームページからナビゲーションサイドバーに移動し、Environments をクリックします。
    2. OAuth / Worker のカスタムアプリケーションを作成した環境(通常はAdministrators)を見つけ、Manage Environment をクリックします。 環境のホームページが表示されます。
    3. 環境のホームページのナビゲーションサイドバーで、Applications をクリックします。
    4. リストから、OAuth またはWorker アプリケーションの詳細を見つけます。
    5. Environment ID フィールドの値をコピーします。 以下の例に似たものになるはずです:
      WorkerAppEnvironmentId='11e96fc7-aa4d-4a60-8196-9acf91424eca'

    次に、WorkerAppEnvironmentIdEnvironment ID フィールドの値に設定します。

    AuthorizationServerURL の設定

    AuthorizationServerURL は、お使いのアプリケーションが配置されている環境のPingOne 認可サーバーのベースURL です。 このプロパティは、PingOne プラットフォームAPI ドキュメントで説明されているように、環境にカスタムドメインを設定した場合にのみ使用されます。 Custom Domains を参照してください。

    OAuth でのPingOne への認証

    PingOne はOAuth とOAuthClient 認証の両方をサポートしています。 上述の設定手順に加え、OAuth またはOAuthCliet 認証をサポートするために、さらに2つの手順を完了する必要があります。

    • ヘルプドキュメントカスタムOAuth アプリケーションの作成で説明するように、カスタムOAuth アプリケーションを作成して設定します。
    • ドライバーがデータモデル内のエンティティにアクセスできるようにするには、ヘルプドキュメントのAdministrator Roles での説明のとおり、使用するアドミンユーザー / ワーカーアプリケーションに対して正しいロールを設定していることを確認してください。
    • 以下のサブセクションで説明されているように、選択した認証スキームと認証フローに適切なプロパティを設定します。

    OAuth(認可コードグラント)

    AuthSchemeOAuth に設定します。

    デスクトップアプリケーション

    OAuth アクセストークンの取得およびリフレッシュ

    以下を設定して、接続してください。

    • InitiateOAuthGETANDREFRESH。繰り返しOAuth の交換を行ったり、手動でOAuthAccessToken を設定する必要をなくすには、InitiateOAuth を使用します。
    • OAuthClientId:カスタムOAuth アプリケーションを作成した際に取得したClient ID。
    • OAuthClientSecret:カスタムOAuth アプリケーションを作成した際に取得したClient Secret。
    • CallbackURL:カスタムOAuth アプリケーションの登録時に定義したリダイレクトURI。例:https://localhost:3333

    接続すると、CData 製品 はデフォルトブラウザでPingOne のOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。 ドライバーはこれでOAuth プロセスを完了します。

    1. ドライバーはPingOne からアクセストークンを取得し、それを使ってデータをリクエストします。
    2. OAuth 値はOAuthSettingsLocation で指定された場所に保存され、接続間で永続化されるようにします。

    ドライバーはアクセストークンの期限が切れると自動的にリフレッシュします。

    Web アプリケーションやヘッドレスマシン、クライアントクレデンシャルグラントを含むその他のOAuth メソッドについては、ヘルプドキュメントを参照してください。

  9. OData クライアントからアクセスさせたい PingOne のテーブルとビューを選択します。
  10. Project -> Add New Item -> WCF Data Service をクリックします。
  11. データソースクラスを指定し、新しい WCF Data Service へのアクセスを構成します。以下の例では、エンティティの Access Rule が All に設定されています。これは、すべてのユーザーがデータの読み取りと変更を行えることを意味します。

      
    using System;
    using System.Collections.Generic;
    using System.Data.Services;
    using System.Data.Services.Common;
    using System.Linq;
    using System.ServiceModel.Web;
    using System.Web;
    
    namespace PingOneService{
      public class PingOneDataService : DataService<PingOneEntities> {
        public static void InitializeService(DataServiceConfiguration config) {
          config.SetEntitySetAccessRule("*", EntitySetRights.All);
          config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        }
      }
    }
    	
  12. プロジェクトを実行します。これで、OData 対応アプリケーションから Salesforce データにアクセスし、変更を反映できるようになります。ブラウザでフィードにアクセスできます。フィードは次のように表示されます:

Power Pivot から OData サービスを利用する

これで、任意の OData クライアント(例:Excel Power Pivot)からサービスを利用できます。

  1. Excel を開き、Power Pivot Window ボタンをクリックします。
  2. 新しいポップアップが表示されます。From Data Feeds オプションを選択します。
  3. 表示される Table Import Wizard で、OData URL を入力します(例:http://localhost:12449/PingOneDataService.svc/)。
  4. OData サービスへの接続後、ウィンドウ下部の Next ボタンをクリックします。
  5. ウィザードの次のウィンドウに、利用可能なテーブルの一覧が表示されます。インポートするテーブルを選択し、Finish をクリックします。
  6. Close をクリックして、Power Pivot にデータをインポートします。

はじめる準備はできましたか?

PingOne Data Provider の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

PingOne Icon PingOne ADO.NET Provider お問い合わせ

PingOne データと連携するパワフルな.NET アプリケーションを短時間・低コストで作成して配布できます。