We here at CoreOS have created dex, an OpenID Connect Identity Provider, written in Go. It's secure, flexible and fairly easy-to-deploy and integrate with - all you need on your application's end is a OpenID Connect Client library - which exists for just about every major language.
You can configure it to manage credentials locally (i.e. email + password) or have users authenticate with other OIDC providers (like Google for example) or both.
For more details on how it works and how we use it see this blog post:
Thanks!
Bobby