php-src/ext/oci8/tests/extauth_01.phpt
Christopher Jones 1c1c98c620 MFH
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);
2008-07-16 22:16:03 +00:00

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===