/ 中存储网

windows下实现系统认证

2015-04-30 21:57:27 来源:中存储网

现在自学Oracle,看到一个参数

os_authent_prefix 看一下官方解释

Property Description

Parameter type String

Syntax OS_AUTHENT_PREFIX = authentication_prefix

Default value OPS$

Modifiable No

OS_AUTHENT_PREFIX 为Oracle 使用给想要连接服务器的用户授权的前缀。  Oracle 会把这个参数的值加在操作系统用户的名字和密码前面。

When a connection request is attempted, Oracle compares the prefixed username with Oracle usernames in the database.

当一个连接试图建立,oracle会去比较加上前缀的操作系统用户名和数据库中的用户名是否一致。

The default value of this parameter is OPS$ for backward compatibility with previous versions. However, you might prefer to set the prefix value to “” (a null string), thereby eliminating the addition of any prefix to operating system account names.

该参数的默认值为OPS$,但是可以修改为“”,这样就可以使操作系统用户名和数据库用户名一致而不需要前缀。

下面看一下如何使用这个参数来完成操作系统验证:

(1)操作系统WINDOWS XP SP3

ORACLE VERSION:10.2.0.1

首先:在注册表【HKEY_LOCAL_MACHINESOFTWAREORACLEKey_OraDb10g_home1】添加此字串值 OSAUTH_PREFIX_DOMAIN = FALSE(值)

(2)SQLNET.ORA中

设置:SQLNET.AUTHENTICATION_SERVICES= (NTS)

(3) 初始化参数os_authent_prefix     修改为“”

[sql]

SQL> alter system set os_authent_prefix='' scope=spfile;

系统已更改。

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area  608174080 bytes

Fixed Size                  1250404 bytes

Variable Size             155192220 bytes

Database Buffers          444596224 bytes

Redo Buffers                7135232 bytes

数据库装载完毕。

数据库已经打开。

(4)以ADMINISTRATOR登陆WINDOWS XP

SQL> connect sys/admin as sysdba

已连接。

创建数据库用户:

[sql]

SQL> show parameter os_authent_prefix

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

os_authent_prefix                    string

SQL> create user dylan identified externally;

用户已创建。

SQL> grant connect, resource to dylan;

授权成功。

(5)创建操作系统用户dylan.

(6)切换用户到dylan,打开cmd输入以下命令查看效果:

[sql]

C:Documents and SettingsAdministrator>sqlplus /

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 8月 19 22:04:01 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> show user

USER 为 “DYLAN”

(7)通常情况下,数据库用户登录后,即使没有ALTER USER 的权限,也是可以修改自己密码的,

但若是以此认证方式登录数据库,则不可以(未经确认,只是尝试失败得到的结论,但仔细想

想,这样要求也合理)。

[sql]

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 8月 19 22:22:10 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> show user

USER 为 “DYLAN”

SQL> alter user dylan identified by dylan;

alter user dylan identified by dylan

*

第 1 行出现错误:

ORA-01031: 权限不足

SQL> conn scott/tiger

已连接。

SQL> alter user scott identified by tiger;

用户已更改。

SQL> select * from session_privs;

PRIVILEGE

----------------------------------------

CREATE SESSION

UNLIMITED TABLESPACE

CREATE TABLE

CREATE CLUSTER

CREATE SEQUENCE

CREATE PROCEDURE

CREATE TRIGGER

CREATE TYPE

CREATE OPERATOR

CREATE INDEXTYPE

已选择10行。

说明:注册表参数 OSAUTH_PREFIX_DOMAIN = FALSE 是 WINDOWS环境下,能否使用

操作系统认证数据库登录的关键,默认情况下,为TRUE,这造成WIDNOWS环境

下无法使用操作系统认证数据库登录的原因!需要在注册表里加上此参数,

方可使用此方法!