如何在B库验证A库的用户及密码?

ysx_5 2010-01-15 04:29:00
dbuser是数据库A的数据库用户。

当前数据库B用户user1登陆数据库B,
user1提供dbuser的用户名及明文密码,
如何通过DB link在数据库A验证user1所提供的用户名及明文密码是正确的呢?



谢谢大家
...全文
119 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysx_5 2010-01-18
  • 打赏
  • 举报
回复
没办法吗?
ysx_5 2010-01-18
  • 打赏
  • 举报
回复
顶一顶
jlj84237485 2010-01-17
  • 打赏
  • 举报
回复
UP
sorry0481 2010-01-16
  • 打赏
  • 举报
回复
帮顶
SambaGao 2010-01-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tangren 的回复:]
oracle用户密码是存在数据字典里,你并不知道密码算法,可能无法进行用户的密码较验吧!
[/Quote]


是啊。oracle 的密码应该是保密的。
ysx_5 2010-01-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 nihaozhangchao 的回复:]
引用 4 楼 tangren 的回复:
oracle用户密码是存在数据字典里,你并不知道密码算法,可能无法进行用户的密码较验吧!



是啊。oracle 的密码应该是保密的。
[/Quote]

有个土招可以实现,就是在B库创建要验证的用户,到dba_users里读加密后的密码,然后再跟A库加密后的密码比较,再将B库创建的用户删除。(太土了,而且验证量比较大,不知道会有什么后果)

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

我是希望能实现:
create or replace validate(username varchar2,userpassword varchar2)
RETURN varchar2 IS
return_value varchar2(100);
BEGIN
--将用户输入的username、userpassword放到数据库A验证。在这里实现验证

conn username/userpassword@A库 如果能获取返回的信息就能验证了,能不能实现啊?

RETURN return_value; --返回登陆成功、或失败
END;
duqiangcise 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 ysx_5 的回复:]
dbuser是数据库A的数据库用户。

当前数据库B用户user1登陆数据库B,
user1提供dbuser的用户名及明文密码,
如何通过DB link在数据库A验证user1所提供的用户名及明文密码是正确的呢?


谢谢大家
[/Quote]

我觉得你的B用户在建立dblink的时候就已经知道了将要连接的a数据库的用户名和密码了。
因为这些(将要用于连接a数据库的用户名和密码)在创建dblink的时候都是必须的属性。

至于对该连接用户的鉴权应该是oracle自己的内部机制了,貌似无法认为的对其进行鉴权。
tangren 2010-01-15
  • 打赏
  • 举报
回复
oracle用户密码是存在数据字典里,你并不知道密码算法,可能无法进行用户的密码较验吧!
ysx_5 2010-01-15
  • 打赏
  • 举报
回复
谢谢nihaozhangchao、lwei_998的回复

你们俩位说的意思我都明白,可能没我没有说得太清楚,我是想在函数里实现这个验证


如在数据库B里建一个函数:

create or replace validate(username varchar2,userpassword varchar2)
RETURN varchar2 IS
return_value varchar2(100);
BEGIN
--将用户输入的username、userpassword放到数据库A验证。在这里实现验证
RETURN return_value; --返回登陆成功、或失败
END;

谢谢
lwei_998 2010-01-15
  • 打赏
  • 举报
回复
oracle 10g : sqlplus 用户/密码@ip:1521/sid
SambaGao 2010-01-15
  • 打赏
  • 举报
回复
create database link ora9i.us.oracle.com ### 这里的us.oracle.com为oracle默认域名 ###
connect to scott identified by tiger
using 'sun';

1)dblink名必须与远程数据库的全局数据库名(global_name)相同;
2)用户名,口令为远程数据库用户名,口令;
3)主机字符串为本机tnsnames.ora中定义的串;
4)两个同名的数据库间不得建立dblink;
然后,你就可以通过dblink访问远程数据库了。
如:

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧