如何使用Windows身份验证将System.Data.OracleClient连接到oracle db?

cha*_*r m 11 oracle ado.net connection-string oracleclient system.data.oracleclient

使用Oracle SQL Developer,我可以将/ -character放入用户名并将密码保留为空,然后我就连接了.我在数据库中创建了OP $ MYWINDOWSUSERNAME用户.

编辑:如果我检查操作系统身份验证复选框(清空和禁用用户名+密码),SQL Developer不起作用.此外,首选项 - >数据库 - >高级 - >使用Oracle客户端未经检查,因此我猜想SQL Developer与我的System.Data.OracleClient.OracleConnection问题有什么关系.

但是,当我尝试形成这样的连接字符串时:

string.Format("Data Source={0}; user id=/;password=;Integrated Security=yes", dbName);
Run Code Online (Sandbox Code Playgroud)

我收到ORA-01017:用户名/密码无效:登录被拒绝

string.Format("Data Source={0}; user id=/;password=;Integrated Security=no", dbName);
Run Code Online (Sandbox Code Playgroud)

我得到了ORA-01005.

string.Format("Data Source={0};Integrated Security=yes", dbName);
Run Code Online (Sandbox Code Playgroud)

我收到ORA-01017:用户名/密码无效:登录被拒绝

string.Format("Data Source={0}; user id=/;", dbName);
Run Code Online (Sandbox Code Playgroud)

我得到了ORA-01005

string.Format("Data Source={0};User Id=/;Integrated Security=yes;", dbName);
Run Code Online (Sandbox Code Playgroud)

我得到了ORA-01017

当我指定用户名和密码时,我的程序中的OracleConnection和Oracle SQL Developer都工作.

编辑:这适用于

string.Format("Data Source={0};Integrated Security=yes", dbName);
Run Code Online (Sandbox Code Playgroud)

当sqlnet.ora行

SQLNET.AUTHENTICATION_SERVICES= (NTS) 
Run Code Online (Sandbox Code Playgroud)

改为

SQLNET.AUTHENTICATION_SERVICES= (NONE)
Run Code Online (Sandbox Code Playgroud)

如果有人写简短的回答发生了什么以及为什么,我很乐意给予他/她赏金.

小智 1

你的问题是你不能使用 / 作为来自数据库机器本身外部的用户 ID。另外在某些情况下 / 不能用于连接数据库,除非指定“/ as sysdba”。因此,如果您想通过 ADO.NET 等客户端库进行连接,则必须指定用户名和密码,否则将无法连接。

如果您想使用 LDAP 用户进行身份验证来访问数据库,您还可以使用 OAM 和 ORACLE SSO 以及 OUD/EUM