在 SQL Server 中设置用户和角色
Microsoft SQL Server 是用于存储用户和角色的一个选项。您可以使用完整版的 SQL Server,也可以使用 SQL Server Express 版本。如果已经安装了某个版本的 SQL Server,则可以用它来存储用户和角色。如未安装,ArcGIS Server 工作组级别会包含 SQL Server Express,下文将进行介绍。安装后,可以允许 ArcGIS Server 管理器在 SQL Server 内部为用户和角色创建一个数据库。如果已经存在一个数据库,其中的 ASP.NET 成员资格和角色的方案正确无误,可在 ArcGIS Server 管理器中配置用户和角色时使用该数据库。
Microsoft SQL Server Express 未随 ArcGIS Server for the Microsoft .NET Framework 企业级一起提供。
安装 Microsoft SQL Server Express
虽然 ArcGIS Server for Microsoft .NET Framework(仅工作组级别)包含了 SQL Server Express,但是 SQL Server Express 并没有随同该软件一起安装。如果安装了 ArcSDE for SQL Server Express 软件包,SQL Server Express 也会在此过程中安装。如果尚未安装 SQL Server Express,可执行以下步骤设置软件以用于存储用户和角色。如果已经安装了完整版的 SQL Server 并且想要将其用于用户和角色,则不需要此步骤。
-
验证是否未安装 Microsoft SQL Server Express:
- 打开 Windows 控制面板 > 添加或删除程序。
- 向下滚动以查找 Microsoft SQL Server 条目。如果不存在该条目,则关闭添加或删除程序 并跳至下一步。
- 如果此项存在,则单击更改按钮。在打开的维护 面板上,检查是否列出了 SQLEXPRESS:Database Engine。如果未列出,则表示未安装 SQL Express。如果已经安装,则跳过安装 SQL Server 的其余步骤。关闭添加或删除程序。
- 在 ArcGIS Server for the Microsoft .NET Framework(仅工作组级别)的安装磁盘上,打开 ArcSDE_Workgroup 文件夹。
- 在 ArcSDE_Workgroup 目录中,您将看到 32 位文件夹和 64 位文件夹。打开与您的操作系统环境相对应的文件夹,并运行 SQLEXPR.exe。例如,如果您正在使用 64 位操作系统(如 Windows Server 2008 R2),则打开 64 位文件夹并运行 SQLEXPR.exe。您也可以从 Microsoft 直接下载和安装 SQL Server Express,但那些步骤将不在此处列出。
- 按照安装向导的提示安装 SQL Server Express。根据贵组织的需要,更改位置和其他选项的默认设置。
- 如果 ArcGIS Server 安装在 SQL Server Express 所在计算机之外的另一台计算机上,请确保 SQL Server Browser 服务正在运行并且设置为自动启动。要进行检查,可打开服务 面板(单击开始,再单击运行,输入 services.msc,然后按 Enter 键)并向下滚动以查找 SQL Server Browser。如果服务尚未运行,请将其启动。如果启动类型没有设置为自动,则右键单击该服务,然后单击属性。在属性 窗口中,使用常规选项卡将启动类型设置为自动。单击确定保存设置。然后可关闭服务 窗口。
将 SQL Server 指定为用户和角色的位置
要使用设置向导指定 SQL Server 的用户和角色,用户必须具有列出实例中的所有数据库并根据需要创建新数据库和方案的 SQL Server 权限。通常,这意味着用于登录到 ArcGIS Server 管理器的 Windows 帐户也必须添加为可以登录 SQL Server 的帐户并且被授予 SQL Server 的 Server 角色中的 sysadmin 或 dbcreator 身份。如果无法使用此类帐户登录到 ArcGIS Server 管理器,可以使用下面介绍的替代说明创建数据库并且手动指定成员资格提供程序。
- 请确保用于登录到 ArcGIS Server 管理器的用户帐户具有在 SQL Server 实例中创建数据库的权限。通常,如果使用 SQL Server Express,用户是该计算机的管理员,并且 ArcGIS Server 管理器和 SQL Server 位于同一台计算机,则已经设置相应权限。否则,使用 SQL Server Management Studio 应用程序将该帐户添加为 SQL Server 的实例级登录帐户并且授予该登录帐户 Server 角色列表中的 sysadmin 或 dbcreator 身份。ArcGIS Server 管理器中到 SQL Server 的连接使用 Windows 身份验证而不是使用 SQL 数据库登录验证。
- 启动 ArcGIS Server 管理器,展开安全性选项卡,然后单击设置。
- 单击配置链接。
- 在打开的用户位置 对话框中,选择 SQL Server。单击下一步。
- 在用于指定 SQL Server 设置的对话框中,于服务器文本框中输入数据库服务器名称。如果使用 SQL Server Express,可将 \SQLEXPRESS 添加到名称的尾部(如果在安装 SQL Server Express 时使用不同的实例名称,则使用相应的实例名称)。
-
单击连接以显示可用数据库和选项的列表。
- 如果连接失败并显示一个类似于“用户 \'<用户名>\' 登录失败”或“用户 \'\' 登录失败”的消息,说明该用户未与可信的 SQL Server 连接相关联。需要检查用于登录到 ArcGIS Server 管理器的帐户是否具有连接和管理 SQL Server 实例上的数据库的权限。对于其他错误,请检查以确保数据库服务器正在运行并且在网络上可用。
-
连接成功后,通过使用信任的连接选项定义应用程序(包括 ArcGIS Server 的 Web 服务)将如何连接到 SQL Server 数据库。此连接也用于在 ArcGIS Server 管理器中创建和编辑用户和角色。请注意,如果选择该选项,此帐户将不用于创建数据库或创建用于存储用户和角色的表。相反,应使用用于启动 ArcGIS Server 管理器的帐户进行数据库和表方案的创建。
- 如果选中使用信任的连接,应用程序将使用 Windows 身份验证连接到 SQL Server。这是 SQL Server Express 的标准方法,也可用于完整版的 SQL Server。这种情况下,运行 Web 应用程序的帐户将用于连接到数据库。在大多数情况下,这是运行 ASP.NET 进程的帐户。在 Windows 2000 和 XP 上,这通常是 ASPNET 帐户。在 Windows Server 2003、Windows Vista 和 Windows Server 2008 上,这通常是“网络服务”帐户;在 Windows 7 和 Windows Server 2008 R2 上,这是一个名为 ArcGISServicesAppPool(此名称与应用程序池的名称相同)的应用程序池标识。在向导完成时,ArcGIS Server 管理器根据需要将此帐户添加到 SQL Server 登录帐户中。如果将 ArcGIS 实例配置为使用 IIS 应用程序池中的固定标识运行,则可能需要授予该用户帐户 SQL Server 数据库的权限(至少具有 Membership_FullAccess 和 Roles_FullAccess 角色成员资格)。请注意,如果 ArcGIS Server 实例位于运行 Windows 2000 或 XP 的计算机上,而 SQL Server 位于运行不同系统的计算机上,则信任的连接可能不起作用。这是因为 ASPNET (Windows XP)、网络服务(Windows Server 2003 和 2008)和应用程序池标识虚拟帐户(Windows Server 2008 R2 和 Windows 7)等帐户是在每台计算机上具有不同密码的本地帐户。一个故障现象是,在尝试添加或编辑用户或角色时会发生错误。这种情况下,可能需要重新运行安全性向导并使用 SQL Server 登录帐户来代替,或者使用固定的帐户、管理的帐户或具有远程 SQL Server 数据库的访问权限的域帐户运行 ArcGISServicesAppPool 应用程序池。
- 如果取消选中使用信任的连接,则输入一个将用于连接到数据库的 SQL Server 登录帐户。必须已经在 SQL Server 实例中创建了此 SQL 登录帐户。无需授予此登录帐户 sysadmin 或其他数据库范围的权限。此登录帐户至少须具有对用于存储用户和角色的数据库的 Membership_FullAccess 和 Roles_FullAccess 权限。必须使用 SQL Server 管理工具授予这些权限。如果数据库尚不存在,可以临时授予此帐户 sysadmin 角色;在 ArcGIS Server 管理器创建数据库后,移除 sysadmin 角色并授予此帐户 Membership_FullAccess 和 Roles_FullAccess 角色。如果数据库存在但尚未设置 ASP.NET 用户和角色方案,可以临时授予此帐户对数据库的 db_owner 权限;并且在完成安全性向导后,更改此帐户的角色以使其仅包含 Membership_FullAccess 和 Roles_FullAccess 权限。
- 如果尚未设置数据库存储角色,单击此选项创建新数据库,然后输入名称(如 aspnetdb)。如果已为 ASP.NET 成员资格和角色设置数据库,则单击此选项以使用现有数据库并从下拉列表中选择该数据库。如果未通过 ArcGIS Server 管理器向导创建数据库,请参阅以下有关使用现有用户和角色数据库的说明。
- 将匿名角色添加到数据库选项会将以下三个通用角色添加到数据库:“任何人”、“经验证的用户”和“匿名”。可以使用这些角色允许任何人或者仅允许拥有有效登录帐户的用户访问一个或多个服务。添加这些角色不会自动允许匿名用户。但是,如果您选择允许匿名用户,则会为匿名用户提供通用角色。有关使用这些角色的详细信息,请参阅保护与服务之间建立的 Internet 连接。这些角色仅与 Web 服务一起使用,不与 Web 应用程序一起使用。单击下一步。
- 在下一个面板上,可以选择配置邮件服务器用于密码恢复。如果配置,用户可以通过这些设置恢复或重置丢失的密码。如果未配置邮件服务器,恢复丢失的密码的链接将不可用。有关处理丢失密码功能的详细信息,请参阅管理用户。要配置邮件服务器,需输入可用于发送密码恢复消息的邮件服务器的名称或 IP 地址。此服务器必须接受标准的简单邮件传输协议 (SMTP)。根据需要设置端口(默认的 SMTP 端口为 25)。如有必要,可输入服务器的用户名(通常配置为电子邮件地址)和密码。大多数邮件服务器要求先登录帐户再发送消息,以防止垃圾邮件。帐户凭据将在配置文件中加密。还要在来自地址中输入将在电子邮件的“自”字段中出现的地址。
- 单击完成保存设置并返回安全性设置主面板。
- 如果尚未给 Web 服务器安装“安全套接字层”(SSL) 证书,则应该现在安装。默认情况下,在 SQL Server 中验证用户的令牌服务要求使用 HTTPS 连接,而 HTTPS 需通过 SSL 证书启用。用于开发目的时,可以禁用此要求。有关详细信息和说明,请参阅配置令牌服务。
在 Windows Server 2000 上,如果尝试添加用户或角色时发生错误,可能需要手动将 ASPNET 帐户添加到 SQL Server 数据库。要执行此操作,可按照后续章节“替代的手动设置说明”中的步骤 1 至步骤 9 进行。
使用现有用户或角色数据库
如果拥有具有用户和角色的 SQL Server 数据库,可为 ArcGIS Server 服务和应用程序的用户和角色使用该数据库。该数据库必须符合标准的 ASP.NET 成员资格和/或角色方案。例如,可能已经按照安装 Microsoft SQL Server Express 2005 并手动创建数据库一节中描述的方法创建数据库。
要使用现有数据库,可能需要配置应用程序名称或 ID。在 SQL Server 成员资格或角色数据库中,用户和角色均已指定唯一的应用程序 ID,它与数据库的 aspnet_Applications 表中的某个应用程序名称相关联。在一个数据库中可以包含多个应用程序名称。这可实现在多个 Web 应用程序之间共享一个数据库,每个 Web 应用程序在数据库中使用特定的应用程序名称来验证用户。这样,一个 Web 应用程序的用户将无法访问绑定到其他数据库应用程序名称的 Web 应用程序。
默认情况下,ArcGIS Server 管理器与 ArcGIS Server 服务和应用程序使用的应用程序名称为 esriags。这与为 ASP.NET 在其 machine.config 文件中定义的默认应用程序名称不同。该默认名称是一个正斜线 (/)。您可能还使用预先存在的数据库为 Web 应用程序定义了不同的应用程序名称。为这些不同应用程序创建的用户对于其他应用程序是不可见的。
例如,您可能在安装 ArcGIS Server 之前已经为用户和角色创建了 SQL Server 数据库。如果使用 ASP.NET 的默认设置创建,则用户和角色的应用程序名称为 /。然后,您安装 ArcGIS Server 并使用 ArcGIS Server 管理器配置安全性,以使用现有的 SQL Server 数据库。配置安全性后,您转至用户 面板。默认情况下,不会显示您的现有用户。这是因为 ArcGIS Server 管理器将用户的应用程序名称设置为 esriags,因此不会显示使用默认名称 / 的用户。
为允许 ArcGIS Server 服务和应用程序使用现有用户和角色,需要使 ArcGIS Server 使用的应用程序名称与您数据库中的某个应用程序名称一致。要使应用程序名称一致,可以执行以下操作之一:
- 将 ArcGIS Server 的应用程序名称设置为您数据库所用的某个名称。对于大多数用户,推荐选择此方法:
- 按照上述将 SQL Server 指定为用户和角色的位置部分中描述的步骤配置安全性,以便使用 SQL Server 数据库。
- 获取用于用户和角色的应用程序名称。可以使用 SQL Server Management Studio 应用程序或其他相应工具检查数据库。应用程序名称在 aspnet_Applications 表中列出。如果存在多个应用程序名称,需要查看 Users 表和 Roles 表中使用的应用程序 ID,它与 Applications 表中的条目相对应。
- 使用文本编辑器(如记事本)、XML 编辑器或 Visual Studio 打开 ArcGIS Web 应用程序实例的 Security 文件夹中的 web.config 文件。默认情况下,此路径为 C:\Inetpub\wwwroot\ArcGIS\Security。
- 在 web.config 文件中,在 <system.web> 部分中找到 <membership> 部分。在定义 SQL 提供程序的 <add> 标签中,查找 applicationName="esriags" 属性。将其中的值 esriags 更改为您为数据库创建的应用程序名称。保存 web.config 文件。
- 在 ArcGIS 的 Web 应用程序文件夹内部的下列三个文件夹中,对 web.config 文件重复执行前两个步骤:Rest、Services 和 Tokens。进行更改后,保存每个 web.config 文件。
- 重新启动 ArcGIS Server 管理器并登录,然后转到用户 面板和角色 面板。在面板中出现了先前添加到数据库的用户和角色。然后,可以基于这些角色及其用户指定允许的服务。
- 或者,可以将数据库中的应用程序名称和使用其用户与角色的任何现有应用程序的名称配置为 ArcGIS Server 使用的名称 (esriags)。只有在已经使用 ArcGIS Server 管理器添加其应用程序名称为默认名称 (esriags) 的用户和角色时,才推荐使用此选项。要采用此方法,请使用 SQL Server Management Studio 或其他工具编辑数据库。打开 Applications 表,复制与 esriags 应用程序名称相对应的 ApplicationId 值。然后,打开用户表(Membership 表和 Users 表)和角色表(Roles 表)。在每个表中,为每个用户或角色更改 ApplicationId,以便与从 Applications 表复制的 esriags 应用程序名称的 ID 值匹配。然后,在使用数据库中的用户的任何现有 Web 应用程序中,编辑 web.config 文件,以便在 <membership> 提供程序中将 applicationName 属性更改或添加为 esriags(即,applicationName="esriags")。
替代的手动设置说明
如果由于某种原因无法使用 ArcGIS Server 管理器创建成员资格数据库,或者想要单独创建该数据库,则可使用任何其他标准方法创建成员资格数据库的数据库和方案。以下是使用 .NET Framework 工具操作 Microsoft SQL Server Express 的步骤概述。有关详细信息,请参阅 ASP.NET 文档。
安装 Microsoft SQL Server Express 2008 并手动创建数据库
- 按照上述说明安装 Microsoft SQL Server Express 2008。
- 安装 Microsoft SQL Server Management Studio Express。可从 http://www.microsoft.com/express/Database/ 下载此程序。
- 通过开始 > (所有)程序 > Microsoft SQL Server 2008 > SQL Server Management Studio Express 启动 SQL Server Management Studio Express。
- 在连接对话框中输入您的 SQL Server 实例名称,如 <计算机名称>\SQLEXPRESS。在身份验证下拉列表中单击 Windows 身份验证,然后单击连接。
-
将 ASP.NET 帐户(或 IIS APPPOOL\ArcGISServicesAppPool 帐户和 IIS APPPOOL\ArcGISApplicationsAppPool 帐户)添加到授权的登录帐户:
- 在主程序窗口中,展开 Security 文件夹。
- 右键单击登录帐户,然后选择新建登录帐户。
- 对于 IIS 6 或 7,可在登录帐户对话框中输入 <计算机名称>\ASPNET 作为登录名(或使用搜索按钮查找帐户)。单击确定将该帐户添加到登录帐户列表中。对于 IIS 7.5,则添加 IIS APPPOOL\ArcGISServicesAppPool 和 IIS APPPOOL\ArcGISApplicationsAppPool。
- 如果 SQL Server 与 ArcGIS Server 不在同一台计算机上,则执行上述步骤 (b) 和 (c) 将 ArcGIS Server 所在的计算机添加到登录帐户中。通过在名称尾部附加美元符号 ($) 字符来指定计算机名称。如果该计算机是某个域的成员,名称中还应包括域名。例如,对于名为 city 的域中名为 GIS1 的计算机,应输入 city\GIS1$。请注意,您无法通过浏览来查看计算机名称。必须手动输入该名称。
-
为成员资格添加新数据库:
- 在主程序窗口中,右键单击数据库,然后单击新建数据库。
- 在数据库对话框中输入名称。ASP.NET 成员资格数据库的标准名称是 aspnetdb。如果仅为 ArcGIS Server 用户创建数据库,可以指定不同的名称。
- 单击确定创建新数据库。
-
为 ASP.NET 帐户访问新数据库授权:
如果使用的是 IIS 6 或 7,可按照以下子步骤进行操作。(如果使用的是 IIS 7.5,请跳至下一组子步骤。)
- 在主程序窗口中,展开数据库 > 新数据库文件夹 > Security 文件夹。
- 右键单击用户,然后单击新建用户。
- 在新建用户 对话框中,为用户名输入 aspnet。
- 为登录名输入 <计算机名称>\ASPNET 或单击省略号 (...) 按钮查找帐户。
- 在数据库角色成员区域,选中 db_owner 项。
- 单击确定添加此用户。
- 重复上述的步骤 (b) 至 (f),但在步骤 (d) 中添加 <计算机名称>\Network Service 帐户。
- 如果 SQL Server Express 安装在 ArcGIS Server 所在计算机之外的另一台计算机上,也应将 ArcGIS Server 所在的计算机添加为登录帐户重复上述的步骤 (b) 至 (f),但在步骤 (d) 中添加计算机名称,并且在名称结尾附加 $ 字符。如果该计算机是某个域的成员,还应包括域名,例如 citydomain\gisserver1$。
如果使用的是 IIS 7.5,可按照以下子步骤进行操作:
- 在主程序窗口中,展开数据库 > 新数据库文件夹 > Security 文件夹。
- 右键单击用户,然后单击新建用户。
- 在新建用户 对话框中,为用户名输入 arcgisservicesapppool。
- 为登录名输入 IIS APPPOOL\ArcGISServicesAppPool 或单击省略号 (...) 按钮查找帐户。
- 在数据库角色成员区域,选中 db_owner 项。
- 单击确定添加此用户。
- 重复上述的步骤 (b) 至 (f),但在步骤 (c) 中输入帐户名称 arcgisapplicationsapppool,并且在步骤 (d) 中添加 IIS APPPOOL\ArcGISApplicationsAppPool 帐户。
- 如果 SQL Server Express 安装在 ArcGIS Server 所在计算机之外的另一台计算机上,也应将 ArcGIS Server 所在的计算机添加为登录帐户重复上述的步骤 (b) 至 (f),但在步骤 (d) 中添加计算机名称,并且在名称结尾附加 $ 字符。如果该计算机是某个域的成员,还应包括域名,例如 citydomain\gisserver1$。
- 退出 SQL Server Management Studio Express。
-
使用 ASP.NET SQL Server 向导在数据库中设置成员方案:
- 通过开始 > (所有)程序 > Microsoft .NET Framework SDK 2.0 > SDK 命令提示符 打开 Microsoft .NET SDK 命令提示符。
- 在命令提示符处输入 aspnet_regsql.exe,然后按 Enter 键。这将打开 ASP.NET SQL Server 设置向导。
- 在向导上单击下一步两次(保持默认设置)。
- 在选择服务器和数据库处,输入服务器名称并添加 sqlexpress 以指定 SQL Express,例如 MYSERVER\SQLEXPRESS。
- 保持身份验证选项为 Windows 身份验证,单击数据库列表,然后单击较早创建的数据库(例如 aspnetdb)。
- 单击下一步,然后再单击下一步以创建方案。
- 单击完成关闭向导。
- 输入 exit,然后按 Enter 键关闭命令提示符。
手动指定 SQL Server 成员资格提供程序
通常,遵循上述指示便可以使用 ArcGIS Server 管理器将 SQL Server 数据库指定为成员资格提供程序。如有必要,可以按照在自定义提供程序中设置用户和角色中的说明手动设置数据库提供程序。设置提供程序时,将成员资格提供程序指向 SQL Server 数据库。使用标准的 ASP.NET 配置语法配置成员资格提供程序。配置完提供程序后,请确保使用 ArcGIS Server 管理器按照在自定义提供程序中设置用户和角色中的描述选择此提供程序。
手动管理 SQL Server 成员资格数据库
将 SQL Server 用作用户和角色的位置时,标准数据库将用于 ASP.NET 成员资格和角色。如果需要,可以使用外部工具管理此数据库(虽然 ESRI 不支持这些外部工具)。请务必确保通过外部工具添加用户或角色时,为用户或角色使用正确的应用程序名称。有关用户和角色的应用程序名称的详细信息,请参阅上面的使用现有用户或角色数据库部分。
用于管理用户和角色的一个常用工具是网站管理工具 (WSAT)。此工具可在打开网站后从 Visual Studio(或 Visual Web Developer Express)获取,打开网站的方法是转至网站 > ASP.NET 配置。要通过 WSAT 管理用户和角色,可在 Visual Studio 中打开 /ArcGIS/Security Web 应用程序,然后打开 WSAT。WSAT 工具可用于添加、编辑和删除用户和角色。
WSAT 和其他工具不能用于管理 GIS 服务的权限规则。这些权限由 ArcGIS Server 内部管理。有关服务如何存储权限的信息,请参阅保护与服务之间建立的 Internet 连接部分中的“设置服务或文件夹的权限”。