Почти для каждого языка должна быть Framework! Вы можете связать / обернуть функциональность этих фреймворков, чтобы определить ваши потребности!
В псевдокоде:
if(IsUserValidViaOpenId() || IsUserValidByOwnAuthDB()) ... user auth successful
Если вы используете Java, Acegi / Spring Security может быть лучшим способом (безопасность, которая не является инверсионной - через AOP). Там вы можете использовать openID и определить свой второй валидатор для вашей собственной userdb!