mirror of
https://github.com/php/php-src.git
synced 2024-10-19 23:44:13 +00:00
1c1c98c620
1. Merged ARG_INFO patch (Felipe) 2. Allow empty username & password so Oracle can do non-password based authentication, i.e. "External Authentication". http://news.php.net/php.internals/37545 [DOC] A new OCI_CRED_EXT flag can be passed as the "session_mode" parameter to oci_connect(), oci_new_connect() and oci_pconnect(). $c1 = oci_connect("/", "", $db, null, OCI_CRED_EXT); This tells Oracle to do external or OS authentication, if configured in the database. OCI_CRED_EXT can only be used with username of "/" and a empty password. Oci8.privileged_connection may be On or Off. OCI_CRED_EXT is not supported on Windows for security reasons. The new flag may be combined with the existing OCI_SYSOPER or OCI_SYSDBA modes (note: oci8.privileged_connection needs to be On for OCI_SYSDBA and OCI_SYSOPER), e.g.: $c1 = oci_connect("/", "", $db, null, OCI_CRED_EXT+OCI_SYSOPER);
197 lines
3.6 KiB
PHP
197 lines
3.6 KiB
PHP
--TEST--
|
|
Test External Authentication errors with oci_connect
|
|
--SKIPIF--
|
|
<?php
|
|
if (!extension_loaded('oci8')) die ("skip no oci8 extension");
|
|
if (substr(PHP_OS, 0, 3) == 'WIN') die("skip feature not available on Windows platforms");
|
|
?>
|
|
--INI--
|
|
oci8.privileged_connect=1
|
|
--FILE--
|
|
<?php
|
|
|
|
// Run Test
|
|
|
|
echo "Test 1\n";
|
|
|
|
$c = oci_connect('/', 'notemtpy', 'anything', null, OCI_CRED_EXT);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
echo "Test 2\n";
|
|
|
|
$c = oci_connect('notemtpy', 'notemtpy', 'anything', null, OCI_CRED_EXT);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
echo "Test 3\n";
|
|
|
|
$c = oci_connect('notemtpy', '', 'anything', null, OCI_CRED_EXT);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
echo "Test 4\n";
|
|
|
|
$c = oci_connect('a', 'b', 'c', null, OCI_SYSDBA+OCI_SYSOPER);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
echo "Test 5\n";
|
|
|
|
$c = oci_connect('a', 'b', 'c', null, OCI_SYSDBA+OCI_SYSOPER+OCI_CRED_EXT);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
echo "Test 6\n";
|
|
|
|
$c = oci_connect('', '', 'anything', null, OCI_CRED_EXT);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
echo "Test 7\n";
|
|
|
|
$c = oci_connect('/', '', 'anything', null, OCI_CRED_EXT);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
echo "Test 8\n";
|
|
|
|
$c = oci_connect('/', null, 'anything', null, OCI_CRED_EXT);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
echo "Test 9\n";
|
|
|
|
$c = oci_connect('/', '', 'c', null, OCI_SYSDBA+OCI_CRED_EXT);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
echo "Test 10\n";
|
|
|
|
$c = oci_connect('/', '', 'c', null, OCI_SYSOPER+OCI_CRED_EXT);
|
|
if (!$c) {
|
|
$m = oci_error();
|
|
var_dump($m);
|
|
}
|
|
var_dump($c);
|
|
|
|
|
|
?>
|
|
===DONE===
|
|
<?php exit(0); ?>
|
|
--EXPECTF--
|
|
Test 1
|
|
|
|
Warning: oci_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
|
|
bool(false)
|
|
bool(false)
|
|
Test 2
|
|
|
|
Warning: oci_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
|
|
bool(false)
|
|
bool(false)
|
|
Test 3
|
|
|
|
Warning: oci_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
|
|
bool(false)
|
|
bool(false)
|
|
Test 4
|
|
|
|
Warning: oci_connect(): OCI_SYSDBA and OCI_SYSOPER cannot be used together in %s on line %d
|
|
bool(false)
|
|
bool(false)
|
|
Test 5
|
|
|
|
Warning: oci_connect(): OCI_SYSDBA and OCI_SYSOPER cannot be used together in %s on line %d
|
|
bool(false)
|
|
bool(false)
|
|
Test 6
|
|
|
|
Warning: oci_connect(): OCI_CRED_EXT can only be used with a username of "/" and a NULL password in %s on line %d
|
|
bool(false)
|
|
bool(false)
|
|
Test 7
|
|
|
|
Warning: oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in %s on line %d
|
|
array(4) {
|
|
["code"]=>
|
|
int(12154)
|
|
["message"]=>
|
|
string(65) "ORA-12154: %s"
|
|
["offset"]=>
|
|
int(0)
|
|
["sqltext"]=>
|
|
string(0) ""
|
|
}
|
|
bool(false)
|
|
Test 8
|
|
|
|
Warning: oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in %s on line %d
|
|
array(4) {
|
|
["code"]=>
|
|
int(12154)
|
|
["message"]=>
|
|
string(65) "ORA-12154: %s"
|
|
["offset"]=>
|
|
int(0)
|
|
["sqltext"]=>
|
|
string(0) ""
|
|
}
|
|
bool(false)
|
|
Test 9
|
|
|
|
Warning: oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in %s on line %d
|
|
array(4) {
|
|
["code"]=>
|
|
int(12154)
|
|
["message"]=>
|
|
string(65) "ORA-12154: %s"
|
|
["offset"]=>
|
|
int(0)
|
|
["sqltext"]=>
|
|
string(0) ""
|
|
}
|
|
bool(false)
|
|
Test 10
|
|
|
|
Warning: oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in %s on line %d
|
|
array(4) {
|
|
["code"]=>
|
|
int(12154)
|
|
["message"]=>
|
|
string(65) "ORA-12154: %s"
|
|
["offset"]=>
|
|
int(0)
|
|
["sqltext"]=>
|
|
string(0) ""
|
|
}
|
|
bool(false)
|
|
===DONE===
|