Skip to main content

เพิ่ม Authentication Provider บน SharePoint 2010 โดยการเขียนโปรแกรมและ PowerShell

Submitted by ezybzy on

วิธีที่นำเสนอต่อไปนี้ยังไม่ได้ทดลองทำบน SharePoint 2013 เลยยังไม่กล้ารับประกันว่าจะทำได้ เลยขอเขียนเจาะจงว่าเป็น 2010 ก่อน

ตามที่ Microsoft แนะนำวิธี การเพิ่ม Authentication Provider ให้กับ SharePoint Farm และ SharePoint Web Application โดยวิธีแก้ด้วยมือ ทางผู้ดูแลระบบต้องแก้ไข web.config 3 ที่ได้แก่ SecurityTokenServiceApplication (อยู่ใน SharePoint Web Services), Central Administration Web Application, และ Web Application ที่ต้องการจะใช้งาน Authentication Provider นั้น

ถ้าใน Farm มี SharePoint แค่เครื่องเดียวมันก็ง่าย เพราะสามารถแก้ทุกอย่างในเครื่องเดียว แต่หากมีการแบ่งแยกหน้าที่เป็นหลายเครื่อง อาจจะพบความไม่สะดวกสบายแล้ว ทางออกที่พอเป็นไปได้คือเขียนโปรแกรมสั่งให้แก้ ซึ่งก็พอมีหนทางเพราะใน API ของ SharePoint ก็มี Class สำหรับแก้ไข web.config อยู่ด้วย ซึ่งหากเล่นกับ Class เหล่านี้เราก็สามารถมั่นใจได้ว่า web.config ที่เราสั่งแก้จะถูกปรับปรุงไปยังทุก IIS Web Site ที่เราต้องการบนทุกเครื่องใน Farm

แต่ปัญหาจริง ๆ สำหรับ SharePoint 2010 นั่นก็คือ ความสามารถนี้ถูกปิดไว้ ต้องสั่งเปิดขึ้นมาก่อนผ่านทาง PowerShell ด้วยคำสั่งต่อไปนี้

$cs = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$cs.RemoteAdministratorAccessDenied = $false
$cs.Update()

เมื่อเปิดให้แก้ไขได้แล้ว เราก็สามารถทำ Feature Event Receiver ที่สั่งให้แก้ไข web.config ของ Web Application ที่ต้องการได้แล้ว

สำหรับ web.config ของ Central Administration นั้น ไม่สามารถใช้คำสั่งข้างต้นเปิดให้แก้ไขได้ (มันจะเป็น AdministrationService แทน) ทำให้เราต้องเขียน PowerShell (หรือจะเขียนเป็นโปรแกรมก็ได้) เพื่อไปเรียกใช้งานบนเครื่อง SharePoint แทน ซึ่งกระบวนการนี้ควรจะทำก่อนที่จะ Activate Feature ในย่อหน้าที่แล้วบน Web Application ที่ต้องการ

ชิ้นส่วนสุดท้ายคือการแก้ไข web.config ของ SecurityTokenServiceApplication ซึ่งในขณะนี้ยังไม่พบหนทางว่าจะจับมันมาเป็น Web Application หรือเจอ SPIisSettings ของมันได้ มีเพียงวิธีแก้ที่ต้องไปรันคำสั่งสั่งแก้ในทุกเครื่องเอาเอง (ดู code จากใน codeplex เอา) ซึ่งก็ไม่ได้ต่างไปจากการแก้มือเลย

Tags