zoukankan      html  css  js  c++  java
  • 使用profile的PASSWORD_VERIFY_FUNCTION参数实现自定义的密码验证规则

    1. @?/rdbms/admin/utlpwdmg.sql 生成 verify_function_11g

    2. 修改verify_function_11g函数,使其使用相关的升级要求。

    =========================================================================

    profile的PASSWORD_VERIFY_FUNCTION参数,允许我们在创建用户或者更改用户
    密码时实施自定义的密码验证规则。

           1.首先,我们需要创建一个自己的实现密码验证规则的函数,该函数必须创建在sys模式
    下,而且必须有三个类型为varchar2的输入参数,第一个参数,包含我们要修改的用户名,第
    二个参数包含新密码,第三个参数包含旧密码,并且返回类型为布尔类型。

          举一个简单的例子,如果我们需要使密码最少保持6位,并在用户修改密码时在
          sys.passwd_changed表中记录用户的旧密码和新密码:
          
          首先创建表passwd_changed:
          
          SQL> conn sys/*** as sysdba
          Connected.
          SQL> create table passwd_changed
            2  (
            3    user_name  varchar2(20) ,
            4    old_passwd varchar2(100) ,
            5    new_passwd varchar2(100) 
            6  )
            7  ;
          
          Table created.
          
          创建实现密码自定义规则的函数my_password_verify:
          
          SQL> CREATE OR REPLACE FUNCTION my_password_verify   (username VARCHAR2   ,password VARCHAR2   ,old_password VARCHAR2   ) RETURN BOOLEAN IS
            2  BEGIN
            3  IF LENGTH(password) < 6 THEN
            4  raise_application_error(-20001,'Password must be at least 6 characters long');
            5  END IF;
            6  INSERT INTO passwd_changed VALUES(username,old_password,password);
            7  RETURN(TRUE);
            8  END;
            9  /
          
          Function created.
          
          2.创建profile实施自定义密码验证规则:
          
          SQL> create profile TEST_PROFILE limit
          2    password_verify_function MY_PASSWORD_VERIFY;
        
           Profile created.
           
          3.使用我们创建的profile:TEST_PROFILE 创建用户test_user,密码为test,看看会发生
          什么:
          SQL> create user test_user
            2    identified by test
            3    default tablespace USERS
            4    temporary tablespace temp
            5    profile TEST_PROFILE;
          create user test_user
          *
          ERROR at line 1:
          ORA-28003: password verification for the specified password failed
          ORA-20001: Password must be at least 6 characters long
          
          可以看到,我们自定义的密码验证规则已经生效,密码:test长度小于6位时,创建用户失败。
          
          4.我们修改密码为test12,重新创建用户test_user:
          
          SQL> create user test_user
          2    identified by test12
          3    default tablespace USERS
          4    temporary tablespace temp
          5    profile TEST_PROFILE;
        
          User created.
          
          
          密码:test12长度等于6位时,创建用户成功。
          
          5.检查sys.passwd_changed表数据:
          SQL> select * from sys.passwd_changed;
     
          USER_NAME   OLD_PASSWD     NEW_PASSWD
          -------------------- ------------------------- 
          TEST_USER                              TEST12
     
          6.更改test_user的密码为test,看看是否可以成功:
          
          SQL> alter user test_user identified by test;
     
           alter user test_user identified by test
            
           ORA-28003: password verification for the specified password failed
           ORA-20001: Password must be at least 6 characters long
     
          7.更改test_user的密码为test123,看看是否可以成功:
          
          SQL> alter user test_user identified by test123;
     
           User altered
     
          
         8.检查sys.passwd_changed表数据:
         
         SQL> select * from sys.passwd_changed;
     
         USER_NAME   OLD_PASSWD     NEW_PASSWD
         -------------------- ------------------------- 
         TEST_USER                              TEST12
         TEST_USER                              TEST123

  • 相关阅读:
    关于datax的SqlServerReader 插件文档读取设置
    SQLyog13.1.1连接MySQL 8.0.19时出现的2058错误,加密方式因版本支持问题解决方法。
    mysql客户端版本太低的问题,应该是先改变加密方式再修改密码.client does not support authentication protocol requested by server consider upgrading mysql client
    IntelliJ IDEA的JavaWeb开发环境搭建
    异构数据源同步工具DataX Web用户手册(一、安装)
    datax安装
    Sql Server 中 根据具体的值 查找该值所在的表和字段
    1202. 交换字符串中的元素
    路径总和
    买卖股票的最佳时机(II)
  • 原文地址:https://www.cnblogs.com/fxcoding/p/14281891.html
Copyright © 2011-2022 走看看