It has SAML support and I guess one of these packages could be customized to your needs? http://www.passportjs.org/packages/