go Kerberos sasl authtication steps
https://archive.apache.org/dist/hbase/1.2.6.1/
http://archive.apache.org/dist/thrift/0.9.3/
Ubuntu: sudo apt-get install libkrb5-dev
MacOS: brew install homebrew/dupes/heimdal --without-x11
Debian: yum install -y krb5-devel
go get git.apache.org/thrift.git/lib/go/[email protected]
go get -tags kerberos github.com/beltran/gosasl
3.3 thrift hbase client(already integration,pass to 4)
tar -zxvf hbase-1.2.6.1-src-tar.gz && cd hbase-1.2.6.1
thrift --out ./ --gen go ./hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift
cp -r ./hbase/* {you application dir}
export KRB5CCNAME={your file path}
export KRB5_CONFIG={your file path}
go get github.com/spierman/gosasl
go run -tags kerberos {XX}.go
go build -tags kerberos {XX}.go
```
import (
"fmt"
"log"
"os"
sasl "github.com/spierman/gosasl"
"github.com/spierman/gosasl/hbase"
)
func main() {
host := "XX.com"
port := 9090
table := "aa"
connection, err := sasl.Connect(host, port, sasl.WithGSSAPISaslTransport("hbase"))
if err != nil {
log.Fatal("Error connecting", err)
return
}
l := log.New(os.Stderr, "GOKRB5 Client: ", log.LstdFlags)
client := hbase.NewHbaseClientFactory(connection.Transport, connection.ProtocolFactory)
isExists, err := client.IsTableEnabled([]byte(table))
if err != nil {
l.Fatalf("could not load: %v", err)
}
fmt.Printf("rst {%s}\n", isExists)
}
```
if the hbase.go report error,please replace like this
```
replace temp to string(temp[:])
```