APIs and integration?

Subscribe to APIs and integration? 13 post(s), 10 voice(s)

 
Avatar KJM 1 post

It’s the usual question—are there plans for an API? Entity import/export would be good, as would some sort of query/reporting capability.

 
Avatar Bruce P. Henry administrator 54 post(s)

We have APIs on our backlog. We’re working right now to figure out exactly what we want to expose in the API and how (as well as pesky little things like documentation). We intend to publish an API in the near future but we’d like to get a little more feedback from our users about the features they want in the product before we build out the API. Once people start building on top of an API it is much more work to make modifications while maintaining backwards compatibility.

 
Avatar cornmike 3 post(s)

Expose authentication through your API please. This would permit us to integrate (so to speak) with our local authentication mechanisms (kerberos, AD, SSO, etc…)

 
Avatar chris.hasbrouck 1 post

Hi…the lack of integrated authentication is/was a huge barrier towards me adopting this solution for my department. Being able to hook into AD authentication would be of tremendous help moving forward for me to convince my director to move from Project Web Access (PWA) to LiquidPlanner.com. Also any solution that would at a minimum allow us to pass usernames and passwords in a secure manner from our web portal to your application for authentication would be enough for us to adopt LiquidPlanner.com as a solution.

 
Avatar Charles Seybold administrator 194 post(s)

Hi Chris. Just wanted to let you know we saw this. We don’t have an answer yet. Bruce is on point for APIs but he’s on his way to Enterprise 2.0 this week; it may be awhile before he gets back to you.

 
Avatar greendot 1 post

I would like to see importing/exporting in the API. We have a web-based bug tracking system (Axosoft OnTime) and would like to be able to bring over items from it and match them up with projects and users in LiquidPlanner.

 
Avatar barre57e 6 post(s)

Here’s a site I’ve found handy for some open source authentication APIs:http://www.middleware.vt.edu/doku.php?id=middleware:ed:edauth:usage

 
Avatar Adam Sanderson administrator 156 post(s)

That LDAP integration actually looks pretty straightforward, the ruby code seems pretty easy. LDAP might be less of a pain than I initially thought.

 
Avatar barre57e 6 post(s)

Here’s another ruby ldap example:http://wiki.rubyonrails.org/rails/pages/HowtoAuthenticateViaLdap

 
Avatar jeremy 1 post

As for API’s, I’d like to somehow combine liquid with redmine and a timecard solution, so that tasks and hours are entered only once across the entire system. A RESTful API would be awesome.

 
Avatar barre57e 6 post(s)

Here some info on authenticating against AD that can be run on unix:

Connecting to AD using java code:
package test;

import java.util.Hashtable;
import javax.naming.ldap.;
import javax.naming.directory.
;
import javax.naming.;

public class searchdigest
{

public static void check(String filter)
{
System.out.println(”===========”);
System.out.println(“Ldap Filter:” + filter);
Hashtable env = new Hashtable();

//Must use either the userPrincipalName or samAccountName,
//Cannot use the distinguished name

//String adminName = “Administrator@antipodes.com”;
String adminPassword = “
*”;
String ldapURL = “ldap://youradserver.school.edu:389”;

env.put(Context.INITIAL_CONTEXT_FACTORY,”com.sun.jndi.ldap.LdapCtxFactory”);

//set security credentials, note using DIGEST-MD5
//Requires user account to be stored with reversible encryption
env.put(Context.SECURITY_AUTHENTICATION,”DIGEST-MD5”);
env.put(Context.SECURITY_PRINCIPAL,adminName);
env.put(Context.SECURITY_CREDENTIALS,adminPassword );

//Could also use DIGEST-MD5 to protect the communications
//Eg. auth-int;integrity, auth-conf;confidentiality
//env.put(“javax.security.sasl.qop”,”auth-conf”);
//And could also request the level of crypto
//Eg. low, medium, high
//env.put(“javax.security.sasl.strength”,”high”);

//connect to my domain controller
env.put(Context.PROVIDER_URL,ldapURL);

try {

// Create the initial directory context
DirContext ctx = new InitialLdapContext(env,null);

// Create the search controls
SearchControls searchCtls = new SearchControls();

//Specify the attributes to return
String returnedAtts[]={“sn”,”givenName”};
searchCtls.setReturningAttributes(returnedAtts);

//Specify the search scope
searchCtls.setSearchScope(SearchControls.SUBTREE_S COPE);

//specify the LDAP search filter
String searchFilter = filter;

//Specify the Base for the search
String searchBase = “OU=Accounts,DC=school,DC=edu”;

//initialize counter to total the results
int totalResults = 0;

// Search for objects using the filter
NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);

//Loop through the search results
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult)answer.next();
totalResults++;
System.out.println(”>>>” + sr.getName());

// Print out some of the attributes, catch the exception if the attributes have no values
Attributes attrs = sr.getAttributes();
if (attrs != null) {
try {
System.out.println(” mail: ” + attrs.get(“mail”).get());
}
catch (NullPointerException e) {
System.out.println();
}

}

}

System.out.println(“Total results: ” + totalResults);
ctx.close();

}

catch (NamingException e) {
System.err.println(“Problem searching directory: ” + e);
}

}

public static void main (String[] args)
{

String filter = “mail=a”;
searchdigest.check(filter);

}

}

==========

Here are some links on the subject matter:

http://geekswithblogs.net/mhamilton/.../04/5592…
http://www.ldapman.org/authentication/index.html
http://www.devshed.com/c/a/Administr…g-LDAP-p…

A nice Novell library useful for ldap stuff:
http://www.codeproject.com/KB/system…nticatio…

To debug I found this tool useful:
http://www.wireshark.org/ .

 
Avatar chris.montone 1 post

Just a suggestion for developing an API. http://www.mashery.com

 
Avatar barre57e 6 post(s)

Active Directory NTLM authentication just got easier using the jcifs apis.

http://jcifs.samba.org/

import jcifs.;
import jcifs.smb.
;

public class Logon {

/* java Logon 192.168.1.15 "dom;user:pass" 
 */
public static void main( String argv[] ) throws Exception {
    UniAddress dc = UniAddress.getByName( argv[0] );
    NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( argv[1] );
    SmbSession.logon( dc, auth );
}
}

Login to reply