我们使用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';
但我无法理解如何使用该方法进行操作系统验证,是否可行。
答案 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数据库实例。