在 ADOMD.NET 中建立安全连接
在 ADOMD.NET 中使用连接时,连接所用的安全方法取决于调用 AdomdConnection 的 Open 方法时所使用的连接字符串的 ProtectionLevel 属性的值。
ProtectionLevel 属性提供的安全级别有四种:不要求身份验证、要求身份验证、签名、加密。下表介绍这些不同的安全级别。
注意 |
---|
如果选择使用数据库连接池,数据库将无法管理安全性。这是因为数据库连接池要求连接字符串与池连接相同。因此,您必须在其他位置管理安全性。 |
安全级别 |
ProtectionLevel 值 |
---|---|
|
None |
|
Connect |
|
Pkt Integrity 或 PktIntegrity |
|
Pkt Privacy 或 PktPrivacy |
但是,并非所有类型的连接都可使用全部安全级别:
TCP 连接可以使用这四种安全级别中的任意一种。实际上,在与 Windows 集成安全性一起使用时,TCP 连接可提供最安全的连接分析数据源的方法。
HTTP 连接只能是要求身份验证的连接。因此,ProtectionLevel 属性必须设置为 Connect。
HTTPS 连接只能是加密连接。因此 ProtectionLevel 属性必须设置为 Pkt Privacy 或 PktPrivacy。
保护 TCP 连接的安全
对于 TCP 连接,ProtectionLevel 属性支持所有四种安全级别,如下表所示。
ProtectionLevel 值 |
是否用于 TCP 连接? |
结果 |
---|---|---|
None |
是 |
指定不要求身份验证的连接。 TCP 流从访问接口请求,但是不会对请求该流的用户执行任何形式的身份验证。 |
Connect |
是 |
指定要求身份验证的连接。 TCP 流从访问接口请求,然后在服务器上对请求该流的用户的安全上下文进行身份验证:
验证成功或失败后,会释放用于验证该连接的安全上下文。 |
Pkt Integrity 或 PktIntegrity |
是 |
指定签名连接。 TCP 流从访问接口请求,然后在服务器上对请求该流的用户的安全上下文进行身份验证:
|
Pkt Privacy 或 PktPrivacy |
是 |
指定加密连接。
注意
不对连接字符串中的 ProtectionLevel 属性进行设置也可以指定加密连接。
TCP 流从访问接口请求,然后在服务器上对请求该流的用户的安全上下文进行身份验证:
|
对连接使用 Windows 集成安全性
Windows 集成安全性是建立和保护与 Analysis Services 实例的连接的最安全方式。Windows 集成安全性不会在身份验证过程中泄露安全凭据,如用户名或密码,而是使用当前运行进程的安全标识符来确立标识。对于大多数客户端应用程序,此安全标识符代表当前登录用户的标识。
若要使用 Windows 集成安全性,连接字符串需要以下设置:
对于 Integrated Security 属性,不设置此属性,或者将此属性设置为 SSPI。
注意 Windows 集成安全性仅可用于 TCP 连接,因为 HTTP 连接必须使用 Integrated Security 属性的 Basic 设置。
对于 ProtectionLevel 属性,请将此属性设置为 Connect、Pkt Integrity 或 Pkt Privacy。
保护 HTTP 连接的安全
HTTPS 和安全套接字层 (SSL) 可用于从外部保护与分析数据源之间的 HTTP 通信。
因为 XMLA 访问接口仅使用安全 HTTP,所以 ADOMD.NET 中的 HTTP 连接必须是签名连接,如下表所示。
ProtectionLevel 值 |
用于 HTTP 还是 HTTPS |
---|---|
None |
否 |
Connect |
HTTP |
Pkt Integrity 或 PktIntegrity |
否 |
Pkt Privacy 或 PktPrivacy |
HTTPS |
有关详细信息,请参阅 Microsoft 网站上的 Configuring HTTP Access to SQL Server Analysis Services on Microsoft Windows XP(配置对 Microsoft Windows XP 上 SQL Server Analysis Services 的 HTTP 访问)。
打开安全 HTTP 连接
下面的示例演示如何使用 ADOMD.NET 打开 AdventureWorksAS 示例 Analysis Services 数据库的 HTTP 连接:
Public Function GetAWEncryptedConnection( _
Optional ByVal serverName As String = "https:\\localhost\isapy\msmdpump.dll") _
As AdomdConnection
Dim strConnectionString As String = ""
Dim objConnection As New AdomdConnection
Try
' To establish an encrypted connection, set the
' ProtectionLevel setting to PktPrivacy.
strConnectionString = "DataSource=" & serverName & ";" & _
"Catalog=AdventureWorksAS;" & _
"ProtectionLevel=PktPrivacy;"
' Note that username and password are not supplied here.
' The current security context is used for authentication
' purposes.
objConnection.ConnectionString = strConnectionString
objConnection.Open()
Catch ex As Exception
objConnection = Nothing
Throw ex
Finally
' Return the encrypted connection.
GetAWEncryptedConnection = objConnection
End Try
End Function