在IIS上托管SharePoint应用程序的详细指南

SharePoint应用程序开发过程中,开发者经常需要将应用程序部署到服务器上。本文将指导开发者如何在IIS上托管SharePoint应用程序,包括创建自签名证书、配置SharePoint、创建IIS站点、在Visual Studio中创建应用程序以及发布和部署应用程序的详细步骤。

创建自签名证书

为了托管高信任级别的应用程序,需要创建一个自签名证书。以下是创建自签名证书的步骤:

  1. 打开IIS管理器,点击服务器,然后双击“服务器证书”。
  2. 创建一个自签名证书。
  3. 将证书导出为一个带密码保护的.pfx文件。
  4. 双击创建的证书,点击“详细信息”标签页。
  5. 点击“复制到文件”并按照步骤创建.cer文件。

配置SharePoint以使用创建的证书

在SharePoint 2013中,需要使用PowerShell脚本来配置SharePoint以使用创建的证书。以下是配置步骤:

# 创建IssuerId $issuerId = [System.Guid]::NewGuid().ToString().ToLower() # PowerShell脚本 $publicCertPath = "C:\root\High_Trust_App_1.cer" $issuerId = ([System.Guid]::NewGuid()).ToString() $spurl = "http://sp:1984/sites/Devsite" $spweb = Get-SPWeb $spurl $sc = Get-SPServiceContext $spweb.site $realm = Get-SPAuthenticationRealm -ServiceContext $sc $certificate = Get-PfxCertificate $publicCertPath $fullIssuerIdentifier = $issuerId + '@' + $realm New-SPTrustedSecurityTokenIssuer -Name $issuerId -Certificate $certificate -RegisteredIssuerName $fullIssuerIdentifier -IsTrustBroker

请注意,需要根据实际情况修改GUID、站点URL和证书路径。

创建IIS站点

在IIS中创建一个站点,并在编辑绑定时添加"https"以及创建的证书。创建站点后,确保禁用匿名认证并启用Windows认证。在“认证”下检查Windows认证的提供者是否包含“NTLM”。

选择网站,然后双击“目录浏览”并启用它。现在站点已经准备好了,例如:https://localhost:1650/

在Visual Studio中创建提供者托管应用程序

在Visual Studio中,点击“新建项目”并选择提供者托管应用程序。在配置认证设置时,点击“使用证书”并提供上述创建的详细信息。

在Visual Studio或Shell命令中创建一个GUID作为“Client Id”。在web.config中添加以下内容:

<appSettings> <add key="ClientId" value="450d02a5-5f69-46ea-9b56-996c9692663d"/> <add key="ClientSigningCertificatePath" value="C:\root\test_cert_1.pfx"/> <add key="ClientSigningCertificatePassword" value="Pass@123"/> <add key="IssuerId" value="fda8d804-7ba0-4a00-8dfd-d1fcc36f81a2"/> </appSettings>

并在AppManifest中添加以下内容:

<AppPrincipal> <RemoteWebApplication ClientId="450d02a5-5f69-46ea-9b56-996c9692663d"/> </AppPrincipal>

在权限标签下为Web配置完全控制权限。

修改TokenHelper.cs

为了使用证书,需要修改TokenHelper.cs以通过其序列号检索它。删除ClientSigningCertificatePath、ClientSigningCertificatePassword和ClientCertificate,并添加以下代码:

private static readonly string ClientSigningCertificateSerialNumber = WebConfigurationManager.AppSettings.Get("ClientSigningCertificateSerialNumber"); private static readonly X509SigningCredentials SigningCredentials = GetSigningCredentials(GetCertificateFromStore());

在#region private methods下创建一个函数:

private static X509Certificate2 GetCertificateFromStore() { if (string.IsNullOrEmpty(ClientSigningCertificateSerialNumber)) { return null; } // Get the machine's personal store X509Certificate2 storedCert; X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); try { // Open for read-only access store.Open(OpenFlags.ReadOnly); // Find the cert storedCert = store.Certificates.Find(X509FindType.FindBySerialNumber, ClientSigningCertificateSerialNumber, true).OfType<X509Certificate2>().SingleOrDefault(); } finally { store.Close(); } return storedCert; }

并将TokenHelper类中的所有ClientCertificate替换为GetCertificateFromStore()。

发布SharePoint Web应用程序

创建一个新的配置文件“SampleProfile”。在连接下点击“Web部署包”并给出包位置。指定上述步骤中创建的https站点作为站点/应用程序。点击发布。

创建应用程序包。点击应用程序项目的发布。选择在上述步骤中创建的配置文件。在托管标签中,输入以下值:

  • 网站:https://localhost:1650(在上述步骤中创建)
  • 客户端ID:450d02a5-5f69-46ea-9b56-996c9692663d
  • 证书位置 = C:\psmi\test_cert_1.pfx
  • 证书密码 = pass1
  • IssuerId = "fda8d804-7ba0-4a00-8dfd-d1fcc36f81a2"

点击完成。从app.publish文件夹中,需要上传到指定SharePoint站点的应用程序目录下的“sharepointapp.app”。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485