製品をチェック

製品の情報と30日間無償トライアル

LDAP 連携ソリューション 相談したい

Azure App サービスでLDAP IFTTT フローをトリガー

この記事では、Logic Apps の標準ウィザードを使用してIFTTT (if-this-then-that) ワークフローを自動化する方法を説明します。

古川えりか
コンテンツスペシャリスト

最終更新日:2022-12-02
ldap ロゴ

CData

apiserver ロゴ画像
Microsoft Azure Logic Apps ロゴ

こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。

OData やSwagger などの標準ベースのインターフェースを介してCData API Server をADO.NET Provider for LDAP(もしくは250+ の他のADO.NET Providers)と組み合わせることで、LDAP を使用してLogic Apps と Power Automate のネイティブエクスペリエンスを提供します。OData は、データへのリアルタイム接続を可能にします。Swagger を使用すると、Logic Apps とPower Automateのウィザードのスキャフォールディング(コード生成) および、Power Apps のスキャフォールディングが可能になります。この記事では、Logic App のIFTTT (if-this-then-that) ワークフローにLDAP を追加する方法を説明します。

API サーバーをセットアップ

以下のステップに従って、安全でSwaggerに対応するLDAP API の作成を開始します。

デプロイ

API サーバーは独自のサーバーで実行されます。Windows では、スタンドアロンサーバーまたはIIS を使用して展開できます。Java サーブレットコンテナで、API Server WAR ファイルをドロップします。詳細とハウツーについては、ヘルプドキュメントを参照してください。

API サーバーは、Microsoft AzureAmazon EC2Heroku にも簡単にデプロイできます。

LDAP に接続

API サーバーとADO.NET Provider for LDAP を展開した後、[Settings]->[Connections]をクリックし、API サーバー管理コンソールで新しい接続を追加して認証値とその他の接続プロパティを指定します。 次に、[Settings]->[Resources]をクリックして、API サーバーへのアクセスを許可する エンティティを選択できます。

リクエストを認証するには、User およびPassword プロパティを有効なLDAP クレデンシャル(例えば、User を"Domain\BobF" または"cn=Bob F,ou=Employees,dc=Domain")に設定します。 CData 製品は、デフォルトでプレーンテキスト認証を使用します。これは、CData 製品がサーバーとTLS/SSL のネゴシエーションを試みるためです。 AuthMechanism を使って別の認証方法を指定できます。 TLS/SSL コンフィギュレーションについて詳しくは、ヘルプドキュメントの「高度な設定」を参照してください。

    基本接続には、Server およびPort を設定します。さらに、次のように接続を微調整できます。
  • FollowReferrals:設定すると、CData 製品は参照サーバーのデータもビューとして表示します。参照サーバー上のデータを変更するには、このサーバーをServer およびPort で指定する必要があります。
  • LDAPVersion:サーバーが実装するプロトコルのバージョンに設定します。デフォルトでは、CData 製品はversion 2 を使用します。
  • BaseDN は、LDAP 検索の範囲を指定された識別名の高さに限定します。BaseDN の範囲を絞ることはパフォーマンスを劇的に向上させます。例えば、"cn=users,dc=domain" の値は、"cn=users" およびその子に含まれる結果のみを返します。
  • Scope:このプロパティを使用すると、サブツリーから返されるデータをより細かく制御できます。

また、CORS を有効にし、[Settings]->[Server]ページで次のセクションを定義する必要があります。[*]なしですべてのドメインを許可するオプションを選択することもできます。

  1. Access-Control-Allow-Origin:値を[*]に設定します。Logic Apps Designer でAPI サーバーを使用するには、Access-Control-Allow-Origin ヘッダー値[*]が必要です。
  2. Access-Control-Allow-Methods:値を[GET,PUT,POST,OPTIONS]に設定します。
  3. Access-Control-Allow-Headers:[x-ms-client-request-id, authorization, content-type]に設定します。

API サーバーユーザーを承認

作成するOData サービスを決定したら、[Settings]->[Users]をクリックしてユーザーを承認します。API サーバーは、認証トークンベースの認証を使用して主要な認証スキームをサポートします。SSL を使用して、接続を認証及び暗号化することができます。アクセスはIP アドレスによって制限することもできます。デフォルトでは、ローカルマシンのみに制限されています。

簡単にするために、API ユーザーの認証トークンをURL で渡すことができます。データディレクトリにあるsettings.cfg ファイルの[Application]セクションに設定を追加する必要があります。Windows でこれは、アプリケーションルートのapp_data サブフォルダにあたります。Java エディションでは、データディレクトリの場所はオペレーティングシステムによって異なります。

  1. Windows:C:\ProgramData\CData
  2. Unix or Mac OS X: ~/cdata
[Application] AllowAuthtokenInURL = true

Logic App でLDAP にアクセス

Logic App でAPI サーバーを使用し、LDAP の周りにプロセスフローを作成できます。HTTP + Swagger アクションは、LDAP に対して実行する操作を定義するためのウィザードを提供します。以下のステップでは、Logic App でLDAP を取得する方法を説明しています。

テーブルにレコードの作成日を含むカラムがある場合は、以下のステップに従って新しいレコードのカラム値をチェックする関数を作成できます。それ以外の場合は、[Create a Logic App]セクションにスキップし、フィルタに一致するエンティティにメールを送信します。

新しいLDAP エンティティを確認

特定の新しいLDAP エンティティを見つけるために、インターバルの開始日時の値を取得する関数を作成できます。

  1. [Azure Portal]で、[New]->[Function App]->[Create]と進みます。
  2. 名前を入力し、サブスクリプション、リソースグループ、App Service プラン、そしてストレージアカウントを選択します。
  3. Function App を選択し、Webhook + API シナリオを選択します。
  4. 言語を選択します。この記事では、JavaScript を使用します。
  5. 以下のコードを追加し、JSON オブジェクトで前の時間を返します。
    module.exports = function (context, data) { 
      var d = new Date();
      d.setHours(d.getHours()-1); 
      // Response of the function to be used later.
      context.res = { 
        body: { 
          start: d 
        } 
      }; 
      context.done(); 
    };
    

トリガーにLDAP を追加

以下のステップに従って、フィルタに一致する結果をLDAP で検索するトリガーを作成します。上記の関数を作成した場合は、返されたインターバルの開始後に作成されたオブジェクトを検索できます。

  1. Azure Portal で[New]をクリックし、[Web + Mobile]セクションで[Logic App]を選択してリソースグループとApp Service プランを選択します。
  2. これで、Logic App Designer で使用可能なウィザードが使用できます。このウィザードには、Logic App の設定ブレードからアクセスできます。Blank Logic App templateを選択します。
  3. LDAP オブジェクトをポーリングするRecurrence アクションを追加します。この記事では、一時間ごとにポーリングします。タイムゾーンを選択します。デフォルトはUTC です。
  4. 関数アクションを追加します。[Add Action]ダイアログのメニューを展開し、リジョンにAzure 関数を表示するオプションを選択します。先に作成したFunction App を選択し、インターバル開始を返す関数を選択します。
  5. からの中括弧のペア({})を入力し、からのペイロードオブジェクトを関数に渡します。
  6. HTTP + Swagger アクションを追加し、API サーバーのSwagger URL を入力します。 http://MySite:MyPort/api.rsc/@MyAuthtoken/$oas
  7. [Return User]操作を選択します。
  8. 各プロパティの説明を使用して、取得する列やフィルターなどの追加パラメータを指定します。以下はフィルタの一例です。

    CN eq 'Administrator'

    API サーバーは、Swagger ドキュメントにて説明とその他のドキュメントを返します。OData API とサポートされているOData の使用方法についての詳細は、API サーバーのヘルプドキュメントを参照してください。

  9. getInterval 関数から返された日時値を使用するには、User テーブルの日時列で[ge]演算子を使用し、ダイアログでBody パラメータを選択します。日時値を囲むには、クォーテーションを使用する必要があることに注意して下さい。

    An OData filter on the results of an Azure Function App, getToday.(Salesforce is shown.)
  10. [Code View]に切り替え、$filter 式を変更してインターバルの開始を含むプロパティを抽出します。'@{body('MyFunc')['MyProp']' 構文を使用します。

    "getAllAccount": {
      "inputs": {
        "method": "get",
          "queries": {
            "$filter":"CreatedDate ge '@{body('getInterval')['start']}'"
          },
          "uri": "https://MySite:MyPort/api.rsc/@MyAuthtoken/User"
      }
    

これで、ワークフローのデータソースおよび宛先としてLDAP にアクセスできます。

新しレコードをメールで送信

以下のステップに従って、新しいUser エンティティを含むレポートをメールで送信します。

  1. [Logic Apps Designer]で[SMTP - Send Email]アクションを追加します。
  2. SMTP サーバーに必要な情報を構成します。
  3. From、To、Subject、Body を構成します。返されたLDAP 列からパラメータを追加できます。

[Save]をクリックし、[Run]をクリックして過去一時間に作成されたLDAP レコードに関する電子メール通知を送信します。

Dynamic columns added to template the body of an email.(Salesforce is shown.)

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。