Oracle中的Windows域身份验证,用户名超过30个符号

时间:2015-10-28 09:51:44

标签: windows oracle authentication

我们使用Windows域身份验证将我们的用户连接到Oracle。大多数时候它工作正常。 但我们遇到了意想不到的问题。 某些用户名长度超过30个符号。所以语法

CREATE USER OPS$SomeVeryLongDomain/SomeVeryLongLogin IDENTIFIED EXTERNALLY

只是不工作。

os_authent_prefix 的标准值为OPS $)。

是否可以对超过30个符号的用户名使用域身份验证?

UPD 肯定有workaround用于Kerberos身份验证。

  

如果用户的Kerberos主体名称长度超过30个字符,最多1024个字符,则按如下方式创建用户:

SQL> CREATE USER db_user_name IDENTIFIED EXTERNALLY AS 'kerberos_principal_name'
  

例如:

SQL> CREATE USER KRBUSER IDENTIFIED EXTERNALLY AS 'KerberosUser@EXAMPLE.COM';

但我无法理解如何使用该方法进行操作系统验证,是否可行。

1 个答案:

答案 0 :(得分:0)

  

os_authent_prefix具有标准值OPS $

嗯,你不能超过30个字符,因为这是限制。阅读External Authentication

os_authent_prefix 参数会影响Oracle在您不使用Windows组成员身份时将Windows用户名与Oracle用户名匹配的方式。早期版本的Oracle使用前缀OPS$,您可以将其附加到外部身份验证中使用的Oracle用户名的开头。由于Oracle用户名限制为 30个字符,因此使用OPS$前缀有效地将用户名限制为剩余的 26个字符。为避免使用OPS $前缀,Oracle数据库参数文件init.ora文件(位于\%ORACLE_HOME%\ database文件夹中)应具有以下设置(默认Oracle9i和Oracle8i安装配置为包括此设置):

os_authent_prefix = ""

提供该参数是为了向后兼容。 Oracle不建议添加前缀,因此默认的空设置如图所示。要使 OS_AUTHENT_PREFIX 设置的更改生效,必须关闭并重新启动Oracle数据库实例。