You can use the NaoQI IK solver with a wrapper, but I found it often to inaccurate and it will give a close approx. solution instead of failing in some cases. It's also only possible to execute the trajectory to the IK solution afaik, not to compute/simulate it and then integrate it in some own implementation.
So you can use any kind of IK available in ROS based in the Nao's model in the nao_description package. E.g. using IKFast of OpenRAVE or the iterative IK in KDL. We used both in our implementation for the Nao: http://www.youtube.com/watch?v=VUmnFy58w90
KDL is more general but slower than IKFast. With IKFast and the Nao (lacking a 6DoF arm), you can only set 3D or 5D IK goals.