Wavefront OBJ supports materials, which color groups of meshes the same color.
Material statements look like this:
newmtl redMtl Kd 1.00 0.00 0.00 Ks 0.50 0.50 0.50 Ns 18.00
So, Kd is the diffuse component, Ks specular.
These would be specified inside a .mtl file that accompanies the .obj file. Inside the .obj file are statements like
usemtl redMtl f 1/5/1 30/39/2 20/29/3 f 20/29/4 30/39/5 31/41/6 f 35/48/7 26/35/8 2/6/9
This means the faces specified there are to use the redMtl material. When you're parsing the obj file, this translates down to per-vertex color.
If there are lots of different colors, you will have a lot of different materials, but you can do it.
Here's a video of how to assign a particular group of faces a different material. You can assign a different material to each face in a mesh if you wish.