SharePoint Server 2016 のエラー "ワークフローマネージャーから返されなかった応答が返されました"
現象
単一の WFM サーバーを使用して SharePoint Server 2016 を Windows Server 2016 にセットアップした場合、SharePoint でワークフローマネージャーをインストールして構成すると、sharepoint Designer を使用するワークフローは次のエラーで失敗します。
Microsoft.Workflow.Client.AuthenticationException: A response was returned that did not come from the Workflow Manager. Status code = 401:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>401 - Unauthorized: Access is denied due to invalid credentials.</title>
<style type="text/css">
<!--
body{marg
原因
開発ファームの WFM サーバーで、"匿名" 認証が無効になっています。
解決方法
"Anonymous" 認証を再度有効化すると、問題を解決できます。
詳細情報
問題を絞り込んだ方法
- Fiddler は、プロキシとして機能し、SharePoint とワークフローマネージャーの間のエンドポイント呼び出しをリッスンする機能を使用しました。 (https://docs.microsoft.com/sharepoint/dev/general-development/debugging-sharepoint-server-workflows)
- Fiddler は、指定されたワークフローとその URL のスコープ情報を WFM に配置または更新しているときにエラーが発生したことを示しています。
Client (SharePoint) Request
=======================
PUT http://<WFMENDPOINT>/SharePoint/default/23fc1ff1-0a17-41dd-862a-6d7b13be1435 HTTP/1.1
Host: <WFMENDPOINT>
<ScopeInfo xmlns="http://schemas.microsoft.com/workflow/2012/xaml/activities" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><DefaultWorkflowConfiguration><appSettings><AppSetting><Key>Microsoft.SharePoint.ActivationProperties.SiteId</Key><Value>23fc1ff1-0a17-41dd-862a-6d7b13be1435</Value></AppSetting><AppSetting><Key>Microsoft.SharePoint.ActivationProperties.Host</Key><Value><SITE URL></Value></AppSetting><AppSetting><Key>Microsoft.SharePoint.ActivationProperties.HostUri</Key><Value>http://<SITE URL> </Value></AppSetting></appSettings></DefaultWorkflowConfiguration><Description>23fc1ff1-0a17-41dd-862a-6d7b13be1435</Description></ScopeInfo>
Server (WFM) Response
====================
HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/10.0
<h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2>
<h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>
(サーバー応答の下の "HTTP/1.1 401 が承認されていません" ということに注意してください)。
- 作業 条件では、スコープ情報をそのように更新します。
Client (SharePoint) Request
======================
PUT http://wfm.contoso.com:12291/SharePoint/default/09d8c9b6-1994-4dad-bf46-cf5de701c0c8 HTTP/1.1
Host: wfm.contoso.com:12291
<ScopeInfo xmlns="http://schemas.microsoft.com/workflow/2012/xaml/activities" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><DefaultWorkflowConfiguration><appSettings><AppSetting><Key>Microsoft.SharePoint.ActivationProperties.SiteId</Key><Value>09d8c9b6-1994-4dad-bf46-cf5de701c0c8</Value></AppSetting><AppSetting><Key>Microsoft.SharePoint.ActivationProperties.Host</Key><Value>sp</Value></AppSetting><AppSetting><Key>Microsoft.SharePoint.ActivationProperties.HostUri</Key><Value>http://sp</Value></AppSetting></appSettings></DefaultWorkflowConfiguration><Description>09d8c9b6-1994-4dad-bf46-cf5de701c0c8</Description></ScopeInfo>
Server (WFM) Response
====================
HTTP/1.1 201 Created
Location: http://wfm.contoso.com:12291/SharePoint/default/09d8c9b6-1994-4dad-bf46-cf5de701c0c8
Server: Microsoft-IIS/10.0
(サーバーの応答で "HTTP/1.1 201 が作成されました" というメモ)。
- ワークフローの発行中にワークフローマネージャーの内部アクティビティを読み取る ETL トレースをキャプチャしました。
- エラーが発生しました。要求は、内部的にはまだ WFM に到達していないことを示しています。
- 作業条件では、スコープ情報をそのように更新します。
WFM Server Internal Activities
=========================
The gateway received an HTTP request. Method: PUT, Uri: http://wfm.contoso.com:12291/SharePoint/default/09d8c9b6-1994-4dad-bf46-cf5de701c0c8, Scope path:
Gateway received request details: Method: PUT, RequestUri: 'http://wfm.contoso.com:12291/SharePoint/default/09d8c9b6-1994-4dad-bf46-cf5de701c0c8', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Accept: application/xml
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImRWaWQ1MFpHYzVuLWh1TXdEc1V3bVdCQ2hZSSJ9.eyJhdWQiOiIwMDAwMDAwNS0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAvd2ZtLmNvbnRvc28uY29tOjEyMjkxQGVhZWQ2MzJkLTEyZjMtNDNlNS1iYmU5LTkwMDhjOGU3YWIxYyIsImlzcyI6IjAwMDAwMDAzLTAwMDAtMGZmMS1jZTAwLTAwMDAwMDAwMDAwMEBlYWVkNjMyZC0xMmYzLTQzZTUtYmJlOS05MDA4YzhlN2FiMWMiLCJuYmYiOiIxNTY0MDMyNTMwIiwiZXhwIjoiMTU2NDE2MjEzMCIsIm5hbWVpZCI6IjAwMDAwMDAzLTAwMDAtMGZmMS1jZTAwLTAwMDAwMDAwMDAwMEBlYWVkNjMyZC0xMmYzLTQzZTUtYmJlOS05MDA4YzhlN2FiMWMifQ.gIvnI1f9EpgCaZMZ7lp-ryq9u_xJ5eVCPv-EGzqBjU_99anCgw64HsU8wCmtvYarj8Qt6XzjrNbY1eXIXLcSTyLsiww26w-OJIxYbKZgX0wvTehyzgY3k_LdkVOae--RkAZ5jRTSZ2hr_nTMbTNj0kJ8ZmLYkSEqhuuZHtqXLcaOSXXQ0xPosBElr_U513P7n8meFfty624l_WcB99wtCPAmA8_kPNhZp6vrcxVuj6vkqz7lcCzTZY0d2qcDGuW1d5DsZwcNKQ7SSdVC1tbK7VYNDi5qdHSBaaZrHWn70FwMdt_nCRLDpEbd8K2tn6w6Ssnbtdb697TqeIRKsyZ_Ew
Expect: 100-continue
Host: wfm.contoso.com:12291
User-Agent: Microsoft-WF/1.0.1
E2EActivity: nvOccj36scBdKMCu3bsJLQ==
client-request-id: 729cf39e-fa3d-c0b1-5d28-c0aeddbb092d
Content-Length: 636
Content-Type: application/xml
}
Start retrieving scope security settings from database.
Creating Scope /SharePoint/default/09d8c9b6-1994-4dad-bf46-cf5de701c0c8
Successfully created scope /SharePoint/default/09d8c9b6-1994-4dad-bf46-cf5de701c0c8
Workflow Manager frontend completed HTTP request successfully and is <mark>returning status code 201 (Created).
Gateway sending HTTP response: StatusCode: 201, ReasonPhrase: 'Created', Version: 1.1, Content: <null>, Headers:
{
Location: http://wfm.contoso.com:12291/SharePoint/default/09d8c9b6-1994-4dad-bf46-cf5de701c0c8
Server: Microsoft-WF/1.0.1
}
(「スコープ/SharePoint/default/09d8c9b6-1994-4dad-bf46-cf5de701c0c8 が正常に作成されました」と「(作成された状態コード 201 (作成)」を参照)。
- これは、要求が WFM サーバーに到達していますが、それ以上、SB またはバックエンドに到達していないことを示しています。 そのため、問題のコンポーネントは IIS でした。
- ワークフローの発行中に、社内の WFM に IIS ログをキャプチャしました。 公開中に IIS が実際にイベントを持つことがわかりました。
2019-07-25 05:28:49 192.168.2.104 PUT /$Scope - 12291 - 192.168.2.102 Microsoft-WF/1.0.1 - 401 0 0 1477
2019-07-25 05:28:52 192.168.2.104 PUT /$Scope - 12291 - 192.168.2.102 Microsoft-WF/1.0.1 - 201 0 0 562
2019-07-25 05:28:52 192.168.2.104 PUT /$Scope - 12291 - 192.168.2.102 Microsoft-WF/1.0.1 - 201 0 0 78
2019-07-25 05:28:53 192.168.2.104 PUT /$Activities/WorkflowXaml_1a80aab2_6f61_4cc9_a8ca_47b599ceb796 $overwriteXClass=true 12291 - 192.168.2.102 Microsoft-WF/1.0.1 - 201 0 0 1558
2019-07-25 05:29:05 192.168.2.104 PUT /$Workflows/607e3d78-07fd-4b3b-99c1-2197768e7db1 - 12291 - 192.168.2.102 Microsoft-WF/1.0.1 - 201 0 0 6741
2019-07-25 05:29:06 192.168.2.104 GET /$Scope - 12291 - 192.168.2.102 Microsoft-WF/1.0.1 - 200 0 0 15
- "指定した資格情報を使用してこのディレクトリまたはページを表示するアクセス許可がありません" というエラーに基づいて、ラボの WFM 上の「ワークフロー管理サイト」の IIS 仮想サーバーのアクセス許可について説明しました。 [匿名] と [Windows 認証] が有効として設定されています。
- "匿名" 認証を無効にすると、エラーが瞬時に再現されます。
- クレーム認証 (Windows クレーム、フォーム認証、または信頼できる Id プロバイダー) を使用している場合、アプリケーションは、匿名認証とフォーム認証が IIS 構成で有効になっていることを確認すると共に、web.config のフォーム認証用に構成されます (https://support.microsoft.com/en-in/help/2655719/sharepoint-authentication-settings-in-central-administration-do-not-ma)
- 既定では、windows クレーム認証を使用して、SP 2013 を開始し、その上で Oauth を使用して、WFM > SP 通信が行われます。
- 開発ファームの WFM サーバーで "Anonymous" 認証が無効になっていることを確認しました。 これを有効にすると、問題が修正されます。
- ワークフローを正常に公開して実行することができました。
さらにヘルプが必要ですか? SharePoint コミュニティにアクセスしてください。