We present a feature-based 3D face recognition algorithm and propose a keypoint identification technique which is repeatable and identifies keypoints where shape variation is high in 3D faces. Moreover, a unique 3D coordinate basis can be defined locally at each keypoint facilitating the extraction of highly descriptive pose invariant features. A feature is extracted by fitting a surface to the neighbourhood of a keypoint and sampling it on a uniform grid. Features from a probe and gallery face are projected to the PCA subspace and matched. Two graphs are constructed from the set of matching features of the probe and gallery face. The similarity between these graphs is used to determine the identity of the probe. The proposed algorithm was tested on the FRGC v2 data and achieved 93.5% identification and 97.4% verifiction rates.