ID: 32988 User updated by: stephane dot dekeyzer at kmi dot be Reported By: stephane dot dekeyzer at kmi dot be -Status: Feedback +Status: Open Bug Type: Feature/Change Request Operating System: Any PHP Version: 5.0.4 New Comment:
simplified version: if(external authentication){ do ext authentication } else{ do login/password authentication } after line 2819, here a re my new lines: if(strcmp(username, "/") == 0 && strlen(password) == 0 || strlen(username) == 0 && strlen(password) == 0){ /* doing external authentication (OCI_CRED_EXT) */ CALL_OCI_RETURN(OCI(error), OCISessionBegin( svchp, OCI(pError), session->pSession, (ub4) OCI_CRED_EXT, (ub4) OCI_DEFAULT ) ); } else { /* set the username in user handle */ CALL_OCI_RETURN(OCI(error), OCIAttrSet( (dvoid *) session->pSession, (ub4) OCI_HTYPE_SESSION, (dvoid *) username, (ub4) strlen(username), (ub4) OCI_ATTR_USERNAME, OCI(pError) ) ); if (OCI(error) != OCI_SUCCESS) { oci_error(OCI(pError), "OCIAttrSet OCI_ATTR_USERNAME", OCI(error)); goto CLEANUP; } /* set the password in user handle */ CALL_OCI_RETURN(OCI(error), OCIAttrSet( (dvoid *) session->pSession, (ub4) OCI_HTYPE_SESSION, (dvoid *) password, (ub4) strlen(password), (ub4) OCI_ATTR_PASSWORD, OCI(pError) ) ); if (OCI(error) != OCI_SUCCESS) { oci_error(OCI(pError), "OCIAttrSet OCI_ATTR_PASSWORD", OCI(error)); goto CLEANUP; } CALL_OCI_RETURN(OCI(error), OCISessionBegin( svchp, OCI(pError), session->pSession, (ub4) OCI_CRED_RDBMS, (ub4) OCI_DEFAULT ) ); } Previous Comments: ------------------------------------------------------------------------ [2005-05-10 17:51:57] [EMAIL PROTECTED] Please post your patch online somewhere as a unified diff against CVS HEAD, and paste the link to that diff into this bug report; thanks :) ------------------------------------------------------------------------ [2005-05-09 17:00:26] stephane dot dekeyzer at kmi dot be Description: ------------ OCILogon, OCIPLogon, doesn't support external authentication to the database ... I know this a ecurity hole if you use php with apache, but when you use it in scripting mode, it is very usefull, and itsn't a security breach. I met Christopher Jones last week at the PHP conference in Amsterdam who agreed and asked me to post this bug so OCI developpers can discuss about it. It would a be a good idea when php runs without apache, external authentication would be allowed. I have a modification of the oci8.c wich support external authentication, just mail me if you want to have it ! Reproduce code: --------------- $conn = OCILogon("", "", mydb); // should work $conn = OCILogon("/", "", mydb); // should also work $conn = OCILogon(null, null, mydb); // should also work Expected result: ---------------- $conn = OCILogon(null, null, mydb); // should work and log me in as the os user curently running the script Actual result: -------------- $conn = OCILogon(null, null, mydb); // gives an error. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=32988&edit=1