Microsoft SharePoint 用 Anypoint Connector (Microsoft SharePoint Connector) は、クラウドとオンプレミスで使用される SharePoint 2013 と SharePoint Online の両方をサポートします。このコネクタにより、コンテンツとドキュメントの管理、イントラネットとエクストラネットのポータルや Web サイトへのアクセス、エンタープライズ全体のコラボレーションや検索が可能になります。また、REST API による SharePoint との統合も実現します。
互換性と解決された問題に関する情報は、「Microsoft SharePoint Connector リリースノート」を参照してください。
始める前に
このコネクタを使用するには、以下に精通している必要があります。
-
Microsoft SharePoint API
-
Anypoint Connector
-
Mule Runtime Engine (Mule)
-
Mule フローの要素とグローバル要素
-
Anypoint Studio (Studio) を使用した Mule アプリケーションの作成
アプリケーションを作成する前に、以下が必要です。
-
Microsoft SharePoint の対象リソースにアクセスするためのログイン情報
-
Anypoint Platform
-
Anypoint Studio バージョン 7.x 以降
POM ファイル情報
<dependency>
<groupId>com.mulesoft.connectors</groupId>
<artifactId>mule-sharepoint-connector</artifactId>
<version>x.y.z</version>
<classifier>mule-plugin</classifier>
</dependency>
x.y.z を使用しているコネクタに対応するバージョンに置き換えます。
最新の pom.xml ファイル情報を取得するには、 Anypoint Exchange でコネクタにアクセスし、[Dependency Snippets (連動関係スニペット)] をクリックします。
OAuth v2.0 認証コード
OAuth v2.0 認証コードを使用するようにコネクタを設定するためには、次の情報が必要です。
-
Site Url (サイト URL): 対象 SharePoint インスタンスの URL
-
Consumer Key (コンシューマーキー): サービスプロバイダーに登録されている OAuth コンシューマーキー
-
Consumer Secret (コンシューマーシークレット): サービスプロバイダーに登録されている OAuth コンシューマーシークレット
-
Listener Config (リスナー設定): アクセストークンコールバックエンドポイントで要求をリスンする HTTP リスナー設定
-
Callback Path (コールバックパス): アクセストークンコールバックエンドポイントのパス
-
Authorize Path (認証パス): OAuth ダンスをトリガーするローカル HTTP エンドポイントのパス
OAuth Client Credentials (OAuth クライアントログイン情報)
OAuth クライアントログイン情報設定する手順は、次のとおりです。
-
証明書 (openssl) を使用してキーストアを作成します。
-
Microsoft Azure にログインします。
-
[Azure Active Directory] に移動します。
-
[App registrations (アプリの登録)] に移動します。
-
新しいアプリケーションを追加して証明書をアップロードするか、既存のアプリケーションをクリックして [Certificates & secrets (証明書とシークレット)] > [Certificates (証明書)] > [Upload certificate (証明書をアップロード)] をクリックして証明書をアップロードします。
-
Anypoint Studio に移動し、コネクタを追加および設定する新しい Mule プロジェクトを作成します。
-
pom.xml ファイルに SharePoint Connector の連動関係を追加します。 -
フローを作成し、キーストアとログイン情報ファイルを
resources フォルダーに追加します。コネクタ設定の必須項目を追加します。証明書認証で OAuth クライアントログイン情報を使用するようにコネクタを設定するためには、次の情報が必要です。-
Site Url (サイト URL): 対象 SharePoint インスタンスの URL
-
Client ID (クライアント ID): API のコールに使用するクライアント ID
-
Token URL (トークン URL): アクセストークンの取得に使用する URL
-
Keystore alias (キーストアの別名): キーストアから正しい証明書を取得するために使用される別名
-
Path to keystore (キーストアへのパス): 非公開キーと証明書が含まれるクライアントのキーストアへのパス
-
Keystore password (キーストアパスワード): キーストアの非公開キーへのアクセスに使用するパスワード
-
Keystore type (キーストア種別): JCEKS、JKS、または PKCS12
-
-
[Test Connection (接続をテスト)] をクリックして、Mule が指定されたサーバーに接続できることを確認します。
-
[OK] をクリックします。
Okta 認証
Okta 認証を使用するようにコネクタを設定するためには、次の情報が必要です。
-
Okta Domain (Okta ドメイン): 認証用の Okta ユーザー名とパスワードを受け入れる Okta エンドポイント。例:
your-domain.okta.com -
Okta Username (Okta ユーザー名): Okta のユーザー名。例:
your-email@example.com -
Okta Password (Okta パスワード): Okta のパスワード。例:
-
Okta API Token (Okta API トークン): Okta は、API 認証にスライドスケール有効期限付きのベアラートークンを使用します。例:
http://developer.okta.com/docs/api/getting_started/getting_a_token.html -
SharePoint Online Embedded Link (SharePoint Online の組み込みリンク): Okta から Microsoft Office 365 SharePoint Online アプリケーションへのリンク。例:
https://your-domain.okta.com/home/office365/0oa14mz7f4HAWypdZ1t7/31737
セキュリティトークン認証
SAML セキュリティトークンを使用して、SharePoint にログインできます。Studio でセキュリティトークンを設定する手順は、次のとおりです。
-
Security token (セキュリティトークン): 対応するセキュリティトークンを入力します。
-
Site URL (サイト URL): 対応するサイトの URL を入力します。
セキュリティトークンは、次の XML 本文で https://login.microsoftonline.com/extSTS.srf に POST 要求を実行して取得できます。
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://www.w3.org/2005/08/addressing"
xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">https://login.microsoftonline.com/extSTS.srf</a:To>
<o:Security s:mustUnderstand="1"
xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken>
<o:Username>[username]</o:Username>
<o:Password>[password]</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body>
<t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<a:EndpointReference>
<a:Address>[endpoint]</a:Address>
</a:EndpointReference>
</wsp:AppliesTo>
<t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType>
<t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
<t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType>
</t:RequestSecurityToken>
</s:Body>
</s:Envelope>
前の要求の応答の <wsse:BinarySecurityToken> タグの間にセキュリティトークンが含まれます。
コネクタの用語について
-
アクション - データの変更など副次的な影響を可能にする操作。非確定的な動作を回避するためにさらなる構成はできません。
-
複合型 - 一連のプロパティからなるキーのない名前付き構造化型。複合型は一般に、モデルエンティティのプロパティ値、あるいは操作のパラメーターや戻り値として使用されます。
-
エンティティ - エンティティ種別 (account、opportunity など) のインスタンス。
-
エンティティセット - エンティティの名前付きコレクション (たとえば、account は account エンティティを含むエンティティセットです)。エンティティのキーでエンティティセット内のエンティティを一意に識別します。
-
エンティティ種別 - キーのある名前付き構造化型。エンティティ種別は、エンティティの名前付きプロパティとリレーションを定義し、1 つの継承によって他のエンティティ種別から派生させることができます。
-
列挙型または Enum 型 - 基本的な整数値を名前付き定数とする名前付きプリミティブ型。
-
関数 - 副作用を発生させず、他の検索条件操作、関数、またはアクションなどと組み合わせて使用できる操作。
Studio プロジェクトへのコネクタの追加
Anypoint Studio では、2 つの方法 (Studio タスクバーの Exchange ボタンまたは Mule パレット) でコネクタを Studio プロジェクトに追加できます。
Exchange を使用してコネクタを追加する
-
Studio で Mule プロジェクトを作成します。
-
Studio タスクバーの左上にある Exchange アイコン (X) をクリックします。
-
Exchange で、[Login (ログイン)] をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。
-
Exchange で「share」を検索します。
-
コネクタを選択して [Add to project (プロジェクトに追加)] をクリックします。
-
画面の指示に従ってコネクタをインストールします。
Studio でコネクタに追加する
-
Studio で Mule プロジェクトを作成します。
-
[Mule Palette (Mule パレット)] ビューで、[(X) Search in Exchange ((X) Exchange 内を検索)] をクリックします。
-
[Add Modules to Project (モジュールをプロジェクトに追加)] で、検索項目に「share」と入力します。
-
[Available modules (使用可能なモジュール)] で、そのコネクタ名をクリックします。
-
[Add (追加)] をクリックします。
-
[Finish (完了)] をクリックします。
最初のフローを設定する
設定方法:
-
Anypoint Studio で、[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)] をクリックします。
-
[Project Name (プロジェクト名)] の値を指定して、[Finish (完了)] をクリックします。
-
[Global Elements (グローバル要素)] タブをクリックします。
-
[Create (作成)] をクリックします。
-
「sharepoint」を検索します。
-
[Microsoft SharePoint] をクリックして [OK] をクリックします。
-
設定するグローバル種別を選択します。
-
[Test Connection (接続をテスト)] をクリックして、正しく接続されることを確認します。
Anypoint Studio フローの作成
Anypoint Studio フローを作成する手順は、次のとおりです。
-
Anypoint Studio で、[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)] をクリックします。
-
[Project Name (プロジェクト名)] の値を指定して、[Finish (完了)] をクリックします。
-
http を検索して、HTTP Connector をキャンバスにドラッグします。 -
sharepoint を検索して、Microsoft SharePoint Connector を HTTP Connector の隣にドラッグします。
-
HTTP Connector をダブルクリックして、[Host (ホスト)] を
0.0.0.0、[Port (ポート)] を 8081、[Path (パス)] を fileAdd に設定します。 -
[OK] をクリックします。
-
Microsoft SharePoint Connector をダブルクリックして、緑色のプラス記号をクリックします。
-
[Connector Configuration (コネクタ設定)] リストで、以前に作成した Microsoft SharePoint の設定をクリックします。
-
[Operation (操作)] リストで [File Add] をクリックします。
次の項目を設定します。
-
File server relative URL (ファイルサーバーの相対 URL): ファイルを作成する SharePoint のパスとファイル名。
-
File content stream (ファイルコンテンツストリーム): 作成するファイルのコンテンツ。
-
フローの実行方法
-
Package Explorer で、プロジェクトの名前を右クリックし、[Run As (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
-
アプリケーションの起動時にコンソールを確認します。エラーが発生していない場合、次のようなメッセージが表示されます。
************************************************************ INFO 2019-10-14 22:12:42,003 [main] org.mule.module.launcher.DeploymentDirectoryWatcher: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Mule is up and kicking (every 5000ms) + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INFO 2019-10-14 22:12:42,006 [main] org.mule.module.launcher.StartupSummaryDeploymentListener: ********************************************************** * - - + DOMAIN + - - * - - + STATUS + - - * ********************************************************** * default * DEPLOYED * ********************************************************** ************************************************************************ * - - + APPLICATION + - - * - - + DOMAIN + - - * - - + STATUS + - - * ************************************************************************ * myapp * default * DEPLOYED * ************************************************************************
よくある質問と回答
-
このコネクタはどの SharePoint バージョンをサポートしますか?
SharePoint Connector は、SharePoint Online とオンプレミス版の SharePoint をサポートします。
-
このコネクタではどの認証方式がサポートされますか?
SharePoint Online では、標準の SharePoint Online ユーザーログイン情報を使用した認証、セキュア認証、Okta 認証がサポートされます。
-
コネクタからは SharePoint オブジェクトモデルのどの部分にアクセスできますか?
ファイルおよびフォルダー、リスト、リスト項目、および添付ファイルがサポートされます。さらに、SharePoint API の他のすべてのエンティティには、ResolveObject 操作と ResolveCollection 操作を使用して JSON 形式でアクセスできます。
-
このコネクタでは DataSense と DataWeave はサポートされますか?
はい。サポートされるすべてのエンティティとエンティティ属性はコネクタによって Studio に提供され、DataWeave で使用できます。
-
このコネクタではどのような操作を実行できますか?
リストおよびリスト項目の API では、Create、Retrieve、Update、および Delete の各操作がサポートされます。
ファイルおよびフォルダーでは、Add、Retrieve content、Retrieve metadata、Delete、Check out、Undo check out、Check in、Publish、Unpublish、Approve、Deny、Recycle、および Copy の各操作がサポートされます。
-
このコネクタではどの Mule エディションを使用できますか?
このコネクタは、CloudHub インテグレーション PaaS など、あらゆるビットのあらゆるオペレーティングシステムで動作しているすべての Enterprise Edition Anypoint Platform でサポートされます。
-
クエリ操作のクエリをビルドする方法は?
クエリ操作
Folder Query、File Query、List Item Query でサポートされるのは OData クエリのみです。List Item Query 操作では、クエリは次の形式になります:LIST_ID?$select=FIELDS_TO_SELECT&filter=FILTER_PART。たとえば、
Vessels?$select=Title,FLAG,SEGMENT,ID,VesselName&$filter=Title eq 1 のようにします。同じ形式が他のクエリ操作に適用されます。
クエリのビルドについての詳細は、SharePoint ドキュメントのページ 「Use OData query operations in SharePoint REST requests (SharePoint REST 要求での OData クエリ操作の使用)」を参照してください。
-
デモをテストできるように HTML フォームを解析する方法は?
「ユースケース: XML」セクションのように <parse-template> ステートメントを使用します。このユースケースでは、
forminput.html はメッセージプロパティまたは変数から抽出された値を挿入するテンプレートとして Mule が使用するファイルです。詳細は、「Parse Template リファレンス」を参照してください。
ユースケース: XML
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:sharepoint="http://www.mulesoft.org/schema/mule/sharepoint"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/sharepoint
http://www.mulesoft.org/schema/mule/sharepoint/current/mule-sharepoint.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<configuration-properties file="mule-app.properties"/>
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
<http:listener-connection host="localhost" port="8081" />
</http:listener-config>
<sharepoint:sharepoint-online-config
name="SharePoint_SharePoint_online"
doc:name="SharePoint online">
<sharepoint:online-connection
username="${sharepoint.username}"
password="${sharepoint.password}"
siteUrl="${sharepoint.siteUrl}"
disableCnCheck="${sharepoint.disableCnCheck}" />
</sharepoint:sharepoint-online-config>
<flow name="UI-PROVIDER">
<http:listener
doc:name="Listener"
config-ref="HTTP_Listener_config"
path="/demo"/>
<parse-template doc:name="Parse Template" location="formInput.html"/>
</flow>
<flow name="FILE-ADD_FLOW">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config"
path="/fileadd"/>
<sharepoint:file-add doc:name="File add"
config-ref="SharePoint_SharePoint_online"
fileServerRelativeUrl="#[attributes.queryParams.path]"
overwrite="true">
<sharepoint:file-content-stream ><![CDATA[#[attributes.queryParams.content]]]></sharepoint:file-content-stream>
</sharepoint:file-add>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
payload.name
]]></ee:set-payload>
</ee:message>
</ee:transform>
<set-payload value="#[payload ++ ' Successfully created.']"
doc:name="Set Payload" mimeType="text/plain"/>
</flow>
<flow name="FILE-GET-CONTENT-FLOW" >
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config"
path="/filegetcontent"/>
<sharepoint:file-get-content doc:name="File get content"
config-ref="SharePoint_SharePoint_online">
<sharepoint:file-server-relative-url ><![CDATA[#[attributes.queryParams.path]]]></sharepoint:file-server-relative-url>
</sharepoint:file-get-content>
<set-payload value="#[payload]" doc:name="Set Payload"
mimeType="text/plain"/>
</flow>
<flow name="FILE-GET-META-FLOW">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/getmetadata"/>
<sharepoint:get-metadata doc:name="Get metadata"
config-ref="SharePoint_SharePoint_online">
<sharepoint:file-server-relative-url ><![CDATA[#[attributes.queryParams.path]]]></sharepoint:file-server-relative-url>
</sharepoint:get-metadata>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="FILE-DELETE-FLOW">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config"
path="/deletefile"/>
<sharepoint:file-delete doc:name="File delete"
config-ref="SharePoint_SharePoint_online">
<sharepoint:file-server-relative-url ><![CDATA[#[attributes.queryParams.path]]]></sharepoint:file-server-relative-url>
</sharepoint:file-delete>
<set-payload value="#[payload ++ ' Successfully deleted.']"
doc:name="Set Payload" mimeType="text/plain"/>
</flow>
</mule>