Encrypting a password when using datasource.cfc in ColdFusion Admin API

I've recently moved (yeah I know - it's only been round for years) to the Admin API for creating datasources but had a problem with the unencrypted password not working when verifying the datasource.

All elements of the datasource created correctly but the password was being stored incorrectly - I looked at how to create a twofish (2fish) based password but after coming accross this blog entry it became a lot simpler! However, it does require that you have access to the Java service factory too.

First to set up the service and encrypt the password:-

 <cfset adminObj = createObject("component","cfide.adminapi.administrator")>
 <cfset myObj = createObject("component","cfide.adminapi.datasource")>
 <cfset service = createobject("java","coldfusion.server.ServiceFactory").getDatasourceService()>
 <cfset form.password = service.encryptPassword(form.password)>

Next to creat the SQL server datasource:-

 <cfscript>
 // Login is always required. This example uses two lines of code.
 adminObj.login("youradminpassword");
 
 // Create a DSN.
 myObj.setMSSQL(driver="MSSQLServer",
 name="#form.dsn#",
 host = "#form.host#",
 port = "#form.port#",
10  database = "#form.database#",
11  username = "#form.username#",
12  password="#form.password#",
13  encryptpassword=false,
14  login_timeout = "29",
15  timeout = "23",
16  interval = 6,
17  buffer = "64000",
18  blob_buffer = "64000",
19  setStringParameterAsUnicode = "false",
20  description = "#form.description#",
21  pooling = true,
22  maxpooledstatements = 999,
23  enableMaxConnections = "true",
24  maxConnections = "299",
25  enable_clob = true,
26  enable_blob = true,
27  disable = false,
28  storedProc = true,
29  alter = true,
30  grant = true,
31  select = true,
32  update = true,
33  create = true,
34  delete = true,
35  drop = true,
36  revoke = false );
37  </cfscript>

Voila, the encrypted password works like a charm!

Encrypting a password when using datasource.cfc in ColdFusion Admin API

I've recently moved (yeah I know - it's only been round for years) to the Admin API for creating datasources but had a problem with the unencrypted password not working when verifying the datasource.

All elements of the datasource created correctly but the password was being stored incorrectly - I looked at how to create a twofish (2fish) based password but after coming accross this blog entry it became a lot simpler! However, it does require that you have access to the Java service factory too.

First to set up the service and encrypt the password:-

 <cfset adminObj = createObject("component","cfide.adminapi.administrator")>
 <cfset myObj = createObject("component","cfide.adminapi.datasource")>
 <cfset service = createobject("java","coldfusion.server.ServiceFactory").getDatasourceService()>
 <cfset form.password = service.encryptPassword(form.password)>

Next to creat the SQL server datasource:-

 <cfscript>
 // Login is always required. This example uses two lines of code.
 adminObj.login("youradminpassword");
 
 // Create a DSN.
 myObj.setMSSQL(driver="MSSQLServer",
 name="#form.dsn#",
 host = "#form.host#",
 port = "#form.port#",
10  database = "#form.database#",
11  username = "#form.username#",
12  password="#form.password#",
13  encryptpassword=false,
14  login_timeout = "29",
15  timeout = "23",
16  interval = 6,
17  buffer = "64000",
18  blob_buffer = "64000",
19  setStringParameterAsUnicode = "false",
20  description = "#form.description#",
21  pooling = true,
22  maxpooledstatements = 999,
23  enableMaxConnections = "true",
24  maxConnections = "299",
25  enable_clob = true,
26  enable_blob = true,
27  disable = false,
28  storedProc = true,
29  alter = true,
30  grant = true,
31  select = true,
32  update = true,
33  create = true,
34  delete = true,
35  drop = true,
36  revoke = false );
37  </cfscript>

Voila, the encrypted password works like a charm!

BlogCFC was created by Raymond Camden. This blog is running version 5.9.5.002. Contact Blog Owner