先日、CDATAさんのイベントで、CDATA API Serverを利用してローカルADのアカウントをSalesforceへプロビジョニングする、というデモをお見せしました。
当日は時間も限られていたのと、あくまでAPI Serverの活用事例の一つとして紹介したので、あまり細かい話はしなかったのですが、ID管理をやっている方々からは、このデモの仕組みをもう少し細かく知りたい、という声も頂いたので少し細かくご紹介していきたいと思います。
当日の資料はこちら。
まずは、どのようなデモをお見せしたのか、動画を用意しているので最初にこちらをご覧ください。
使っている道具は、
・オンプレミスのActive Directory
・Azure AD Connect+REST Management Agent(カスタム)
・Azure Active Directory
・CDATA API Server 2017J
・Salesforce.com
です。
*ちなみにAzure AD ConnectへカスタムManagement Agentを組み込む場合、所定の手続きを踏まないとサポート対象外となります。今回は手元にちょうどあった環境を使ったのでAzure AD Connectを使いましたが、本番環境ではMIM(Microsoft Identity Manager)やExgen LDAP Managerなど汎用的なID管理ツールを使ってください。
こんなことをしなくてもAzure ADから直接Salesforce.comへプロビジョニングすればいいじゃん、という話はありますが、手軽にテナントが用意できるSaaSなのであえてSalesforce.comを選択しています。もちろんCDATA API Serverが接続用のドライバを持っているサービスであれば何でも構いません。
では、早速環境の解説をしていきます。
1.オンプレミスのActive DirectoryからAzure ADへの同期環境を構成する
これは、特に特殊なことはしていません。Office365向けのID基盤を構築する時と同様にAzure AD Connectを構成します。ものすごいシンプルな構成です。ローカルADもexample.localですし。。。
2.Salesforce.comのテナントを用意し、Azure ADとシングルサインオンを設定する
これも良くあるものなので、何も細かいことは気にしません。以下の手順で設定をしていきます。
・Salesforce.comへのカスタムドメインの追加
・Azure ADにSalesforce.comアプリの追加とシングルサインオン設定
サインオンURL、EntityIDにSalesforce.comに設定したカスタムドメインを指定し、証明書をダウンロードしておきます。
・Salesforce.comへAzure ADとのシングルサインオン設定
Azure ADからダウンロードした証明書のアップロード、Issuerの設定、SSO URI、SLO URI、Salesforce側のEntityIDの設定を行います。設定すべきURI等の情報はAzure ADの設定ページに手順を含め記載されています。
ここまででシングルサインオンは出来るようになります。
3.API ServerとSalesforce.comを接続する
API Serverはここから評価版のダウンロードができます。http://www.cdata.com/jp/apiserver/
ただ、この本体にはSalesforce.comとの接続に使うドライバが同梱されていないので、別途Salesforce.comドライバ(ADO.NET版)をダウンロードします。
こちらも評価版があります。
http://www.cdata.com/jp/download/?f=ado
インストール自体は次へ、次への世界なので何も気にすることは無く、インストールが終わるAPI Serverが起動してきます。
ちなみにデモでは手元のWindows 10の端末で動かしています。
設定メニューより接続タブを開き、新規に接続先を追加します。
接続先アプリケーションとしてSalesforceを選択します。
Salesforce.comへの接続に使うユーザIDとパスワードを入れ、保存します。
ちなみに、信頼されていないネットワークから接続している場合は、セキュリティ・トークンの設定が求められることがあります。
このエラーが出た場合は、Salesforce.comに管理者でログインし個人の設定からセキュリティ・トークンをリセットし、メールで送られてくるセキュリティ・トークンをAPI Serverに設定します。
次に、Salesforce.comのユーザを管理しているテーブルをAPI Serverのリソースとして定義し、REST APIとして公開します。
同じく、設定メニューの中のリソースタブを開き、リソースを追加します。
データソースに先ほど定義したSalesforce.comへの接続を選択します。
ユーザ情報が格納されているテーブルの名前はその名の通りUserなので、選択して保存します。
Userテーブルのカラム一覧が自動的に取得されるので、そのまま保存します。
ここまででSalesforce.comのUserテーブルをAPI ServerがREST APIとして公開できました。
最後にAPI接続を行うためのAPI Server上のユーザを定義します。
ユーザタブを開き、追加をします。
ユーザ名と実行できるメソッドを指定して保存します。
保存すると認証に使うAuthトークンが表示されるのでユーザ名と合わせてメモしておきます。
これで設定は完了です。
接続確認としてユーザ一覧を取得してみます。
APIメニューを開き、先ほど作成したリソースを開くとエンドポイントとメソッドが出てきます。
今回はテストなのでユーザ一覧を取得するので、単純にUserエンドポイントをGETします。
BASIC認証がかかり、ダイアログが出てくるので先ほど作成したユーザとAuthトークンをID、パスワードとして入力します。
上手くいくと、ユーザ一覧がODATA形式で取得出来ます。
これで、API Server経由でSalesforce.com上のユーザを操作するための準備はすべて整いました。
後は、Azure AD ConnectからAPI Serverで公開したAPIを叩くだけです。
この部分は若干コードを書くので、次回詳細は解説したいと思います。
ということで今回はここまでです。