Awesome
gopgkrb5
Adds the dependencies necessary for Go PG drivers to access krb5.
It is a separate repository for reducing dependencies and is heavily inherited from the lib/pq library.
Usage with jackc/pgconn
and friends
Add the library:
go get github.com/otan/gopgkrb5
and initialise the package and import the package into pgconn
:
import (
"github.com/jackc/pgconn"
"github.com/otan/gopgkrb5"
)
func init() {
pgconn.RegisterGSSProvider(func() (pgconn.GSS, error) { return gopgkrb5.NewGSS() })
}
Unix only features
Optional settings are available:
import (
"github.com/jcmturner/gokrb5/v8/client"
"github.com/jackc/pgconn"
"github.com/otan/gopgkrb5"
)
func init() {
pgconn.RegisterGSSProvider(func() (pgconn.GSS, error) { return gopgkrb5.NewGSS(client.NewSettings(...)) })
}
You can also use keytab to log in:
func init() {
pgconn.RegisterGSSProvider(func() (pgconn.GSS, error) {
return gopgkrb5.NewGSSWithKeytab("username", "DOMAIN.LOCAL", "/test.keytab")
})
}
or password:
func init() {
pgconn.RegisterGSSProvider(func() (pgconn.GSS, error) {
return gopgkrb5.NewGSSWithPassword("username", "DOMAIN.LOCAL", "password")
})
}
All dependencies of jackc/pgconn
, e.g. jackc/pgx
will now be able to authenticate with
GSSAPI/krb5.