Title:
Bug 83855:-(Watson Migration Closure)Our previous Web server environment consisted of 32 bit Windows Server 2003, IIS 6, and ColdFusion MX 6
| View in TrackerStatus/Resolution/Reason: Closed/Won't Fix/LowImpact
Reporter/Name(from Bugbase): Eugene Colucci / Eugene Colucci (ecolucci)
Created: 08/18/2010
Components: General Server
Versions: 9.0
Failure Type: Unspecified
Found In Build/Fixed In Build: 251028 /
Priority/Frequency: Trivial / Unknown
Locale/System: English / Win All
Vote Count: 0
Problem:
Our previous Web server environment consisted of 32 bit Windows Server 2003, IIS 6, and ColdFusion MX 6.1. Many of our ColdFusion applications in that environment use a variation of the ntsecurity.cfc, which is a CF component containing three methods to authenticate users, return AD group information for a user, or do both. You can download the entire code for this CFC at this location: http://128.205.202.95/~ecolucci/Adobe/. We have been using this code for six or seven years without fail.Recently, we migrated our primary Web server environment to 32 bit Windows Server 2008, IIS 7, and ColdFusion 9. Although we still successfully can authenticate individual users against either our AD domain or AD OU, we no longer are able to retrieve group membership information for any user. A relevant CF log indicates that "The RPC server is unavailable." (The full text of the error is "Error","jrpp-20","07/02/10","15:00:13",,"Error in ntsecurity.cfc method getUserGroups - Error: The RPC server is unavailable. ")This is odd considering that the code on our CFMX 6.1 installation on both our test and development servers continues to function flawlessly. Additionally, I was able to locate one other person on line who seems to have the almost identical problem in that his code works well with CF 8 but not with his CF 9 installation. This suggests a CF 9 related problem.
Method:
What follows is the same CF code--minus the credits--that can be obtained from the download location provided in my summary of the problem.<CFCOMPONENT NAME="services.NTSecurity" > <!--- Authenticates the user and outputs true on success and false on failure. ---> <CFFUNCTION NAME="authenticateUser" ACCESS="REMOTE" OUTPUT="yes" STATIC="yes" HINT="Authenticates the user."> <CFARGUMENT NAME="userid" TYPE="string" REQUIRED="true" /> <CFARGUMENT NAME="passwd" TYPE="string" REQUIRED="true" /> <CFARGUMENT NAME="domain" TYPE="string" REQUIRED="true" /> <CFTRY> <CFSCRIPT> ntauth = createObject("java", "jrun.security.NTAuth"); ntauth.init(arguments.domain); // authenticateUser throws an exception if it fails, // so we don't have anything specific here ntauth.authenticateUser(arguments.userid, arguments.passwd);auth = true; </CFSCRIPT> <CFCATCH> <CFSET auth = false> </CFCATCH> </CFTRY> <CFRETURN AUTH> </CFFUNCTION> <!--- Returns user's groups. Outputs groupnames on success and false on failure. ---> <CFFUNCTION NAME="getUserGroups" ACCESS="REMOTE" OUTPUT="yes" STATIC="yes" HINT="Gets user groups."> <CFARGUMENT NAME="userid" TYPE="string" REQUIRED="true" /> <CFARGUMENT NAME="passwd" TYPE="string" REQUIRED="false" /> <CFARGUMENT NAME="domain" TYPE="string" REQUIRED="true" /> <CFTRY> <CFSCRIPT> ntauth = createObject("java", "jrun.security.NTAuth"); ntauth.init(arguments.domain); groups = ntauth.GetUserGroups(arguments.userid); // note that groups is a java.util.list, which should be // equiv to a CF array, but it's not right now groups = trim(groups.toString()); groups = mid(groups,2,len(groups)-2); </CFSCRIPT> <CFCATCH><!---<CFSET groups = false>---><!---Code below added by Eugene on July 2, 2010.---><cflog text="Error in ntsecurity.cfc method getUserGroups - Error: #cfcatch.message#" type="Error" log="authentication" file="ENTvideo" thread="yes" date="yes" time="yes" application="no"> <cfreturn ""><!---Log file names in <CFLOG/> are stored in the default ColdFusion Logs directory, and the file name cannot include the full path; the .log extension is added automatically.---><!---This end code added by Eugene on July 2, 2010.---> </CFCATCH> </CFTRY> <CFRETURN GROUPS> </CFFUNCTION> <!--- This method combines the functionality of authenticateUser and getUserGroups. ---> <CFFUNCTION NAME="authenticateAndGetGroups" ACCESS="REMOTE" OUTPUT="yes" STATIC="yes" HINT="Gets user groups."> <CFARGUMENT NAME="userid" TYPE="string" REQUIRED="true" /> <CFARGUMENT NAME="passwd" TYPE="string" REQUIRED="true" /> <CFARGUMENT NAME="domain" TYPE="string" REQUIRED="true" /> <CFTRY> <CFSCRIPT> ntauth = createObject("java", "jrun.security.NTAuth"); ntauth.init(arguments.domain); // authenticateUser throws an exception if it fails, // so we don't have anything specific here ntauth.authenticateUser(arguments.userid, arguments.passwd); groups = ntauth.GetUserGroups(arguments.userid); // note that groups is a java.util.list, which should be // equiv to a CF array, but it's not right now groups = trim(groups.toString()); groups = mid(groups,2,len(groups)-2); </CFSCRIPT> <CFCATCH> <CFSET groups = false> </CFCATCH> </CFTRY> <CFRETURN GROUPS> </CFFUNCTION></CFCOMPONENT>
Result:
"Error","jrpp-20","07/02/10","15:00:13",,"Error in ntsecurity.cfc method getUserGroups - Error: The RPC server is unavailable. "
----------------------------- Additional Watson Details -----------------------------
Watson Bug ID: 3041900
External Customer Info:
External Company:
External Customer Name: Eugene Colucci
External Customer Email: 50BE634244611D62992016B8
External Test Config: 08/18/2010
Attachments:
Comments: