宣告在 SharePoint Server 驗證不驗證使用者

 

**適用版本:**SharePoint Foundation 2013, SharePoint Server 2013, SharePoint Server 2016

**上次修改主題的時間:**2017-09-20

**摘要:**由於 SharePoint Server 2016 和 SharePoint 2013 建議使用者以宣告式驗證來存取 Web 應用程式,因此本文說明您可以用來疑難排解宣告式使用者驗證嘗試失敗的工具和技巧。

當使用者嘗試連接至 Web 應用程式時,記錄檔會記錄失敗的驗證事件。如果您使用 Microsoft 提供的工具,並使用系統化的方法來檢查失敗,就可以了解有關宣告式驗證的一般問題,並加以解決。

成功存取 SharePoint 資源需要驗證及授權。當您使用宣告時,驗證會確認安全性憑證是否有效。授權會依據安全性憑證中的宣告組,以及為資源設定的權限,確認可允許存取資源。

若要判斷是否為驗證或授權造成存取問題,請仔細查看瀏覽器視窗中的錯誤訊息。

  • 如果錯誤訊息指出使用者沒有網站的存取權,則表示驗證成功,而授權失敗。若要疑難排解授權問題,請嘗試下列解決方案:

    • 使用安全性聲明標記語言 (SAML) 宣告式驗證時,授權失敗最常見的原因,就是權限是指派給使用者的 Windows 帳戶 (網域\使用者),而不是使用者的 SAML 身分宣告。

    • 確認使用者或使用者所屬的群組已設定為使用適當的權限。如需詳細資訊,請參閱<使用者權限與 SharePoint Server 中的權限層級>。

    • 使用本文中的工具和技巧來判斷使用者安全性憑證中的宣告組,這樣您就可以將其與所設定的權限做比較。

  • 如果訊息指出驗證失敗,則您有驗證問題。如果資源包含在使用宣告式驗證的 SharePoint Web 應用程式中,請使用本文中的資訊開始疑難排解。

疑難排解工具

下列是 Microsoft 提供的主要疑難排解工具,可收集 SharePoint Server 中宣告驗證的詳細資訊:

  • 使用統一記錄系統 (ULS) 記錄檔來取得驗證交易的詳細資料。

  • 使用管理中心來確認 SharePoint Web 應用程式和區域的使用者驗證設定詳細資料,以及設定 ULS 記錄的層級。

  • 如果您是使用 Active Directory Federation Services 2.0 (AD FS) 做為安全性聲明標記語言 (SAML) 宣告驗證的同盟提供者,您可以使用 AD FS 記錄來判斷 AD FS 發行至網頁用戶端電腦之安全性憑證中的宣告。

  • 使用 Network Monitor 3.4 來擷取及檢查使用者驗證網路流量的詳細資料。

設定使用者驗證的 ULS 記錄層級

下列程序會設定 SharePoint Server,以記錄宣告驗證嘗試的最高資訊量。

若要為 SharePoint Server 設定使用者驗證記錄的最大量

  1. 從管理中心,按一下 [快速啟動] 上的 [監視],然後按一下 [設定診斷記錄]。

  2. 在類別清單中,展開 [SharePoint Foundation],然後選取 [驗證授權] 和 [宣告驗證]。

  3. 在 [回報至事件記錄的最低緊急事件] 中,選取 [詳細資訊]。

  4. 在 [回報至追蹤記錄的最低緊急事件] 中,選取 [詳細資訊]。

  5. 按一下 [確定]。

在未執行宣告驗證疑難排解的情況下,若要最佳化效能,請遵循下列步驟,將使用者驗證記錄設為其預設值。

若要為 SharePoint Server 設定使用者驗證記錄的預設量

  1. 從管理中心,按一下 [快速啟動] 上的 [監視],然後按一下 [設定診斷記錄]。

  2. 在類別清單中,展開 [SharePoint Foundation],然後選取 [驗證授權] 和 [宣告驗證]。

  3. 在 [回報至事件記錄的最低緊急事件] 中,選取 [資訊]。

  4. 在 [回報至追蹤記錄的最低緊急事件] 中,選取 [中等]。

  5. 按一下 [確定]。

設定 AD FS 記錄

即使在您啟用 ULS 記錄的最高層級之後,SharePoint Server 還是沒有將宣告組記錄在其收到的安全性憑證中。如果您將 AD FS 用於 SAML 宣告驗證,則可以啟用 AD FS 記錄,並使用事件檢視器來檢查 SharePoint Server 發行之安全性憑證的宣告。

啟用 AD FS 記錄

  1. 在 AD FS 伺服器上,從事件檢視器按一下 [檢視],然後按一下 [顯示分析與偵錯記錄檔]。

  2. 在事件檢視器主控台樹狀目錄中,展開 [應用程式及服務記錄檔/AD FS 2.0 追蹤]。

  3. 以滑鼠右鍵按一下 [偵錯],然後按一下 [啟用記錄]。

  4. 開啟 %ProgramFiles%\Active Directory Federation Services 2.0 資料夾。

  5. 使用 [記事本] 來開啟 Microsoft.IdentityServer.ServiceHost.Exe.Config 檔案。

  6. 依序按一下 [編輯] 和 [尋找],輸入 <source name=“Microsoft.IdentityModel“ switchValue="Off">,然後按一下 [確定]。

  7. switchValue="Off" 變更為 switchValue="Verbose"

  8. 依序按一下 [檔案] 和 [儲存],然後結束 [記事本]。

  9. 在 [服務] 嵌入式管理單元中,以滑鼠右鍵按一下 [AD FS 2.0 服務],然後按一下 [重新啟動]。

您現在可以在 AD FS 伺服器上使用事件檢視器,從 [應用程式及服務記錄檔/AD FS 2.0 追蹤/偵錯] 節點來檢查宣告的詳細資料。尋找事件識別碼為 1001 的事件。

您也可以使用 HttpModule 或網頁組件,或是透過 OperationContext 來列舉宣告。如需詳細資訊,請參閱如何在 SharePoint 2010 中於增強宣告時取得所有使用者宣告。這些有關 SharePoint 2010 的資訊也適用於 SharePoint 2013。

宣告使用者驗證的疑難排解方法

下列步驟可協助您判斷宣告驗證嘗試失敗的原因。

步驟 1:判斷失敗的驗證嘗試詳細資料

若要取得驗證嘗試失敗的詳細及確切資訊,您必須在 SharePoint ULS 記錄檔中尋找。這些記錄檔儲存在 %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\15\LOGS 資料夾中。

您可以手動在 ULS 記錄檔中尋找失敗的驗證嘗試,或是使用 ULS 記錄檔檢視器來尋找。

手動尋找失敗的驗證嘗試

  1. 向使用者取得產生失敗驗證嘗試的使用者帳戶名稱。

  2. 在執行 SharePoint Server 或 SharePoint Foundation 的伺服器上,尋找 %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\16\LOGS 或 %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\15\LOGS 資料夾。

  3. LOGS 資料夾中,按一下 [修改日期],以依日期排序資料夾,最新的在上面。

  4. 重試驗證工作

  5. LOGS 資料夾視窗中,按兩下清單頂端的記錄檔,以在 [記事本] 中開啟該檔案。

  6. 在 [記事本] 中,依序按一下 [編輯] 和 [尋找],輸入驗證授權宣告驗證,然後按一下 [尋找下一筆]。

  7. 按一下 [取消],然後閱讀 [訊息] 欄的內容。

若要使用 ULS 檢視器,請從 ULS 檢視器下載,並儲存至執行 SharePoint Server 或 SharePoint Foundation 之伺服器上的資料夾。安裝之後,遵循下列步驟來尋找失敗的驗證嘗試。

使用 ULS 檢視器來尋找失敗的驗證嘗試

  1. 在執行 SharePoint Server 或 SharePoint Foundation 的伺服器上,從儲存所在的資料夾按兩下 Ulsviewer

  2. 在 [ULS 檢視器] 中,按一下 [檔案],指向 [開啟來源],然後按一下 [ULS]。

  3. 在 [設定 ULS 執行階段摘要] 對話方塊中,確認 [使用預設記錄檔目錄中的 ULS 摘要] 中已指定 %CommonProgramFiles%\Common Files\Microsoft Shared\Web Server Extensions\16\LOGS 資料夾\Common Files\Microsoft Shared\Web Server Extensions\15\LOGS 資料夾。如果沒有,則按一下 [使用即時摘要的目錄位置] 並且在 [記錄檔位置] 中指定 %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\16\LOGS 資料夾\Microsoft Shared\Web Server Extensions\15\LOGS 資料夾

    針對 %CommonProgramFiles%,請將 CommonProgramFiles 環境變數的值替換為執行 SharePoint Server 或 SharePoint Foundation 的伺服器。例如,如果該位置為 C 磁碟機,則 %CommonProgramFiles% 設為 C:\Program Files\Common Files。

  4. 按一下 [確定]。

  5. 按一下 [編輯],然後按一下 [修改篩選]。

  6. 在 [篩選條件] 對話方塊的 [欄位] 中,按一下 [類別]。

  7. 在 [值] 中,輸入 [驗證授權] 或 [宣告驗證],然後按一下 [確定]。

  8. 重複驗證嘗試。

  9. 從 [ULS 檢視器] 視窗中,按兩下所顯示的字行,以檢視 [訊息] 部分。

針對非 OAuth 要求,從 Message 部分的宣告編碼部分中,您可以從宣告編碼字串 (例如:i:0#.w|contoso\chris) 判斷驗證方法和所編碼的使用者身分識別。如需詳細資訊,請參閱 SharePoint 2013 和 SharePoint 2010 宣告編碼

步驟 2:檢查設定需求

若要判斷如何設定 Web 應用程式或區域,以支援一或多個宣告驗證方法,請使用 SharePoint 管理中心網站。

確認 Web 應用程式或區域的驗證設定

  1. 從管理中心的快速啟動上,按一下 [應用程式管理],然後按一下 [管理 Web 應用程式]。

  2. 按一下使用者嘗試存取之 Web 應用程式的名稱,然後在功能區的 [安全性] 群組中,按一下 [驗證提供者]。

  3. 在驗證提供者清單中,按一下適當的區域 (例如 [預設])。

  4. 在 [編輯驗證] 對話方塊的 [宣告驗證類型] 區段中,確認宣告驗證的設定。

    • 若為 Windows 宣告驗證,請確認已選取 [啟用 Windows 驗證] 和 [整合式 Windows 驗證],而且已依需要選取 [NTLM] 或 [交涉 (Kerberos)]。若有需要,可選取 [基本驗證]。

    • 若為表單型驗證,請確認已選取 [啟用表單型驗證 (FBA)]。確認 [ASP.NET 成員資格提供者名稱] 和 [ASP.NET 角色管理員名稱] 中的值。這些值必須符合您在 web.config 檔案中,為 SharePoint 管理中心網站、Web 應用程式和 SharePoint Web Services\SecurityTokenServiceApplication 設定的成員資格提供者和角色值。如需詳細資訊,請參閱<在 SharePoint 2013 中設定宣告式 Web 應用程式的表單型驗證>。

    • 若為 SAML 型宣告驗證,請確認已選取 [信任的身分識別提供者] 和正確的信任提供者名稱。如需詳細資訊,請參閱<在 SharePoint 2013 中使用 AD FS 設定 SAML 式宣告驗證>。

    • 在 [登入頁面 URL] 區段中,確認登入頁面的選項。若為預設登入頁面,應已選取 [預設登入頁面 URL]。若為自訂登入頁面,請確認自訂登入頁面的指定 URL。若要進行確認,請複製 URL,然後嘗試使用網頁瀏覽器來加以存取。

  5. 按一下 [儲存],將變更儲存至驗證設定。

  6. 重複驗證嘗試。若為表單型或 SAML 型驗證,所預期的登入頁面是否伴隨著正確的登入選項出現?

  7. 如果驗證仍失敗,請檢查 ULS 記錄檔,以判斷驗證設定變更之前與之後的驗證嘗試是否有任何差異。

步驟 3:所要檢查的其他項目

檢查記錄檔和 Web 應用程式設定之後,確認下列項目:

  • 網頁用戶端電腦上的網頁瀏覽器可支援宣告。如需詳細資訊,請參閱<在 SharePoint Server 2016 中規劃瀏覽器支援>。

  • 若為 Windows 宣告驗證,請確認下列項目:

    • 使用者發出驗證嘗試的來源電腦是主控 SharePoint Web 應用程式之伺服器的相同網域成員,或是主控伺服器所信任之網域的成員。

    • 使用者發出驗證嘗試的來源電腦已登入其 Active Directory 網域服務 (AD DS) 網域。在網頁用戶端電腦上的命令提示字元或 SharePoint 管理命令介面中,輸入 nltest /dsgetdc: /force,以確定其可存取網域控制站。如果沒有列出任何網域控制站,請疑難排解網頁用戶端電腦與 AD DS 網域控制站之間缺乏探索能力及連線能力的問題。

    • 執行 SharePoint Server 或 SharePoint Foundation 的伺服器已登入其 AD DS 網域。在執行 SharePoint Server 或 SharePoint Foundation 之伺服器上的命令提示字元或 SharePoint 管理命令介面 中,鍵入 nltest /dsgetdc: /force,以確定其可以存取網域控制站。如果沒有列出任何網域控制站,請對 SharePoint Server 或 SharePoint Foundation 之伺服器與 AD DS 網域控制站之間缺乏探索能力及連線能力的問題,進行疑難排解。

  • 若為表單型驗證,請確認下列項目:

    • 所設定之 ASP.NET 成員資格和角色提供者的使用者認證正確。

    • 網路上有主控 ASP.NET 成員資格和角色提供者的系統可供使用。

    • 自訂登入頁面正確地收集和傳達使用者的認證。若要測試是否正確,請將 Web 應用程式設定為暫時使用預設登入頁面,並確認運作正常。

  • 若為 SAML 型宣告驗證,請確認下列項目:

    • 所設定之身分識別提供者的使用者認證正確。

    • 網路上有做為同盟提供者 (例如 AD FS) 和身分識別提供者 (例如 AD DS 或協力廠商身分識別提供者) 的系統可供使用。

    • 自訂登入頁面正確地收集和傳達使用者的認證。若要測試是否正確,請將 Web 應用程式設定為暫時使用預設登入頁面,並確認運作正常。

步驟 4:使用 Web 偵錯工具來監視及分析網路流量

使用 HttpWatchFiddler 之類的工具來分析下列類型的 HTTP 流量:

  • 在網頁用戶端電腦與執行 SharePoint Server 或 SharePoint Foundation 的伺服器之間

    例如,您可以監視執行 SharePoint Server 或 SharePoint Foundation 之伺服器傳送的 HTTP 重新導向訊息,以將同盟伺服器 (例如 AD FS) 的位置通知網頁用戶端電腦。

  • 在網頁用戶端電腦與同盟伺服器 (例如 AD FS) 之間

    例如,您可以監視網頁用戶端電腦傳送的 HTTP 訊息,以及同盟伺服器的回應,其中可能包含安全性憑證及其宣告。

注意

如果您使用 Fiddler,在要求三次驗證提示之後,驗證嘗試就會失敗。若要防止此行為,請參閱使用 Fiddler 搭配 SAML 和 SharePoint 以通過三次驗證提示

步驟 5:擷取及分析驗證網路流量

使用網路流量工具 (例如 Network Monitor 3.4) 來擷取及分析網頁用戶端電腦、執行 SharePoint Server 或 SharePoint Foundation 的伺服器,以及 SharePoint Server 或 SharePoint Foundation 所仰賴的系統之間的流量,以進行宣告驗證。

注意

在許多情況下,宣告驗證會使用超文字安全傳輸通訊協定 (HTTPS) 連線,這種連線會將在電腦之間傳送的訊息加密。您必須要有增益集或擴充選項的協助,才能以網路流量工具查看加密訊息的內容。例如,若為 Network Monitor,您必須安裝及設定 Network Monitor Decryption Expert。另一個嘗試將 HTTPS 訊息解密的較簡單方法,就是在主控 SharePoint Server 或 SharePoint Foundation 的伺服器上使用 Fiddler 之類的工具,可針對未解密的 HTTP 訊息提供報告。

網路流量的分析可顯示下列項目:

  • 在宣告驗證程序中,在相關電腦之間傳送的確切通訊協定與訊息組合。回覆訊息可能包含錯誤狀況資訊,可用來判斷額外的疑難排解步驟。

  • 要求訊息是否有相對應的回覆。傳送多次但未收到回覆的要求訊息,可能表示網路流量未到達其目的地。在此情況下,請檢查封包路由問題、路徑中的封包篩選裝置 (例如防火牆) 或目的地的封包篩選 (例如本機防火牆)。

  • 是否嘗試過多種宣告方法,以及哪些方法失敗。

若為 Windows 宣告驗證,您可以擷取及分析下列電腦之間的流量:

  • 網頁用戶端電腦與執行 SharePoint Server 或 SharePoint Foundation 的伺服器

  • 執行 SharePoint Server 或 SharePoint Foundation 的伺服器與其網域控制站

若為表單型驗證,您可以擷取及分析下列電腦之間的流量:

  • 網頁用戶端電腦與執行 SharePoint Server 或 SharePoint Foundation 的伺服器

  • 執行 SharePoint Server 或 SharePoint Foundation 的伺服器與 ASP.NET 成員資格和角色提供者

若為 SAML 型宣告驗證,您可以擷取及分析下列電腦之間的流量:

  • 網頁用戶端電腦與執行 SharePoint Server 或 SharePoint Foundation 的伺服器

  • 網頁用戶端電腦與其身分識別提供者 (例如 AD DS 網域控制站)

  • 網頁用戶端電腦與同盟提供者 (例如 AD FS)

See also

在 SharePoint 2013 中設定宣告式 Web 應用程式的表單型驗證
在 SharePoint 2013 中使用 AD FS 設定 SAML 式宣告驗證