SharePoint ワークフロー プラットフォームを使用して引き上げられた権限でワークフローを作成する
この記事では、引き上げられた権限を必要とする SharePoint 内のオブジェクトにアクセスする SharePoint ワークフローを作成する方法について説明します。 これらのソリューションでは、ワークフロー アプリへの権限の付与と、アプリ ステップでのアクションのラップという 2 つの機能を使用します。
注:
SharePoint 2010 ワークフローは、2020 年 8 月 1 日以降、新しいテナント用に廃止され、2020 年 11 月 1 日に既存のテナントから削除されました。 SharePoint 2010 ワークフローを使用している場合は、Power Automate またはその他のサポートされているソリューションに移行することをお勧めします。 詳細については、「SharePoint 2010 ワークフローの廃止」を参照してください。
重要
この記事では、SharePoint ワークフロー プラットフォームがインストールおよび構成されており、SharePoint がアドイン用に構成されているものとします。SharePoint ワークフローおよび SharePoint アドインのインストールと構成などの詳細については、「SharePoint のワークフロー」および「SharePoint アドインをインストールおよび管理する」を参照してください。
SharePoint 管理者として、Office ストアからアドインを購入するユーザー要求の管理プロセスを定義する場合について考えます。 最も簡単なケースとして、ユーザーからアドインの要求があった際に、確認応答の電子メールを送信したいとします。 さらに、要求承認プロセスに構造を追加するものとします。
既定では、ワークフローには、アプリ カタログにアクセスする権限はありません。 SharePoint のカタログ リストには、所有者 (フル コントロール) の権限が必要です。 ワークフローは通常、書き込みと同等の権限レベルで実行されます。
これを解決するには、サイト コレクション サイトで以下の手順に従って引き上げられた権限を持つワークフローを作成する必要があります。
- ワークフローにアドインの権限の使用を許可します。
- ワークフローにフル コントロール権限を付与します。
- ワークフローを作成してアプリ ステップの内部のアクションをラップします。
SharePoint サイトでのアドインの権限の使用をワークフローに許可する
最初の手順は、ワークフローにアドインの権限の使用を許可します。 ワークフローを実行する SharePoint サイトの [サイトの設定] ページで、アドインの権限を使用するようにワークフローを構成します。 次の手順では、ワークフローがアドインの権限を使用することを許可するように SharePoint サイトを構成します。
重要
この手順は、[サイト管理者] 権限のあるユーザーが完了する必要があります。
ワークフローにアドインの権限の使用を許可するには
- 図に示されているように [設定] アイコンをクリックして、[サイトの設定] ページを開きます。
[サイトの設定] に移動します。
[サイトの操作] セクションで、[サイト機能の管理] を選択します。
次の図のように、[ワークフローでアプリの権限を使える] という名前の機能を探し、[アクティブ化] を選択します。
警告
この機能は、SharePoint ワークフロー プラットフォームおよび SharePoint アドインが正しく構成されていないとアクティブになりません。
ワークフローにフル コントロール権限を付与する
ワークフローが正しく機能するには、サイト上でフル コントロール権限が付与されている必要があります。 次の手順では、ワークフローにフル コントロール権限を付与します。
重要
この手順は、[サイトの所有者] 権限のあるユーザーが完了する必要があります。 ワークフローは既に SharePoint サイトに対して発行されている必要があります。
ワークフローにフル コントロール権限を付与するには
- [設定] アイコンをクリックします。
[サイトの設定] に移動します。
[ユーザーと権限] セクションで、[サイト アプリの権限] を選択します。
重要
SharePoint Online で、[サイト コレクションのアプリの権限] を選択します。 このオプションは、サイト コレクション管理者のみに表示されます。
[アプリ ID] のクライアント セクションをコピーします。 これは、図に示すように、ID の最後の "|" と "@" 記号の間の部分です。
[アプリへの権限の付与] ページに移動します。 サイトの appinv.aspx ページを参照して、これを行う必要があります。
例:
http://{hostname}/{the Site Collection}/_layouts/15/appinv.aspx
。注:
この手順での ”アプリ” は、特定のワークフローではなく、一般的なワークフローのアドインを意味します。 個々のワークフローをアクセス制御することはできません。 アドインのアクセス許可を有効にすると、サイト コレクション内部のすべてのワークフローのアクセス許可が有効になります。
ワークフローの設定の詳細については、Sympraxis Consulting のブログ記事: Looping Through Content in a SharePoint Site Workflow を参照してください。
次の図に例を示します。
前の図のように、クライアント ID を [アプリ ID] フィールドに貼り付け、[参照] を選択します。
次のコードを権限要求 XML フィールドに貼り付け、フル コントロール権限を付与します (注: このコード ブロックは 2017 年 12 月 29 日に、
AllowAppOnlyPolicy
を含むように更新されました)。<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" /> </AppPermissionRequests>
警告
Scope 値にはプレース ホルダーはありません。 これはリテラル値です。 ここに示されているとおりに入力してください。
次の図は、完成したページ の例を示しています。(権限要求 XML エリアのコードは、手順 7 でのコードへの最新の更新を反映していません)。
[作成] を選択します。
次の図のように、ワークフロー アドインを信頼することを求められます。 [信頼する] を選択します。
アプリ ステップの内部のアクションをラップする
最後に、アプリ ステップの内部にあるワークフロー アクションをラップする必要があります。 以下の手順では、アプリ ステップ内の電子メールを送信するアクションをラップしています。 この例のワークフローでは、カスタム リストから確認応答の電子メール メッセージを送信します。
アプリ ステップの内部のアクションをラップするには
SharePoint Designer でアプリ カタログ サイトを開きます。
ワークフローを実行する新しいカスタム リストを作成します。 この例では、リストの名前は App Demo です。
ナビゲーション ウィンドウの [ワークフロー] を選択します。
図に示すように、App Demo リストに対する新しい リスト ワークフロー を作成します。
図のように、[アプリ ステップ] を挿入します。
[電子メールを送信する] アクションを [アプリ ステップ] に挿入します。
[アドレス帳] ボタンを選択します。 [宛先] フィールドで [ユーザーのワークフロー参照] を選択し、さらに [追加] を選択します (図を参照)。
[作成者] フィールドに参照値を入力します (図を参照)。
電子メール メッセージの本文に、「App Demo リストからの電子メール」と入力します。
[OK] を選択してワークフローに戻ります。 完了したワークフローを図に示します。
リボンの [ワークフロー設定] アイコンを選択します (図を参照)。
[現在のステージ名に合わせてワークフローの状態を自動的に更新する] チェック ボックスをオフにし、[発行] を選択します。
動作原理の概要
ワークフローの権限を引き上げる必要がある理由を理解するには、ワークフローは基本的に SharePoint 用のアドインであり、アドイン モデルと同じ承認ルールに従うことを考慮してください。 図のように、ワークフローの既定の構成では、ワークフローの有効な権限は、ユーザーの権限とアドインの権限の共通部分になります。
アプリ要求リスト内のワークフローを作成するために権限を引き上げる必要があるのは、次のような 2 つの理由によります。
- 既定では、ワークフローだけが書き込み権限を持ちます。
- ユーザーは権限を持っていません。
この問題を解決するための最初の手順は、アプリケーションが ID のみを使用し、ユーザーの ID を無視して承認できるようにすることです。 これを行うには、アプリ ステップ機能を有効にします。 2 番目の手順では、ワークフローに完全な制御アクセス許可を付与します。
次の図は権限の変更を示したものです。