用于具有模拟功能的 nodejs 的 orcaledb
orcaledb for nodejs with impersonation
实际上我正在为我正在做的事情寻找技术解释。我不是 orcaldb for nodejs 的专家。
我有一个 nodejs 应用程序作为 API 与 Expressjs 一起使用,与数据库的连接是通过 orcaledb 单连接完成的,但我正在使用用户模拟来建立连接,以便能够在 Oracle 中获取用户权限。
oracledb.getConnection({
user: dbConfig.user + ((user_Id === '') ? '' : '[' + user_Id + ']'),
password: dbConfig.password,
connectString: dbConfig.connectString
}
我问的是;
以这种方式使用连接确实表现为池连接感觉用户每次都改变,或者它的单一连接。主用户已获得子用户的授权访问权限。主用户[子用户]。
任何帮助表示赞赏
BUT I am using user impersonation to make the connection to be able to take the user privileges in Oracle
您正在使用的功能的术语是 "proxy authentication"。
Using the connection in this way do behave as Pool connection sense the user is changed every time, or its single connection.
它仍然是一个连接。这两个功能是截然不同的:连接池和代理身份验证。您可以单独使用其中之一,也可以同时使用两者。
池背后的想法是减少与创建新连接(新进程、内存分配等)相关的开销。由于您使用的是 Express Web 服务器,因此您很可能正在创建一个多用户应用程序。这是将从连接池中受益的应用程序类型(例如,与每小时运行的作业相反)。
代理身份验证有多种用途,但主要用途之一是身份保存。换句话说,您可以作为最终用户代理连接,而不是作为单个通用用户连接。这允许更好地集成安全功能,例如角色和审计。
要将两者结合起来,请参阅 Pool Proxy Authentication 上的文档部分。
实际上我正在为我正在做的事情寻找技术解释。我不是 orcaldb for nodejs 的专家。 我有一个 nodejs 应用程序作为 API 与 Expressjs 一起使用,与数据库的连接是通过 orcaledb 单连接完成的,但我正在使用用户模拟来建立连接,以便能够在 Oracle 中获取用户权限。
oracledb.getConnection({
user: dbConfig.user + ((user_Id === '') ? '' : '[' + user_Id + ']'),
password: dbConfig.password,
connectString: dbConfig.connectString
}
我问的是; 以这种方式使用连接确实表现为池连接感觉用户每次都改变,或者它的单一连接。主用户已获得子用户的授权访问权限。主用户[子用户]。 任何帮助表示赞赏
BUT I am using user impersonation to make the connection to be able to take the user privileges in Oracle
您正在使用的功能的术语是 "proxy authentication"。
Using the connection in this way do behave as Pool connection sense the user is changed every time, or its single connection.
它仍然是一个连接。这两个功能是截然不同的:连接池和代理身份验证。您可以单独使用其中之一,也可以同时使用两者。
池背后的想法是减少与创建新连接(新进程、内存分配等)相关的开销。由于您使用的是 Express Web 服务器,因此您很可能正在创建一个多用户应用程序。这是将从连接池中受益的应用程序类型(例如,与每小时运行的作业相反)。
代理身份验证有多种用途,但主要用途之一是身份保存。换句话说,您可以作为最终用户代理连接,而不是作为单个通用用户连接。这允许更好地集成安全功能,例如角色和审计。
要将两者结合起来,请参阅 Pool Proxy Authentication 上的文档部分。