mirror of
https://github.com/Luzifer/nginx-sso.git
synced 2024-12-20 21:01:17 +00:00
|
||
---|---|---|
.. | ||
.gitignore | ||
LICENSE | ||
readme.md | ||
yubigo.go |
yubigo
Yubigo is a Yubikey client API library that provides an easy way to integrate the Yubikey into any Go application.
Installation
Installation is simple. Use go get:
go get github.com/GeertJohan/yubigo
Usage
Make sure to import the library: import "github.com/GeertJohan/yubigo"
For use with the default Yubico servers, make sure you have an API key. Request a key.
Basic OTP checking usage:
// create a new yubiAuth instance with id and key
yubiAuth, err := yubigo.NewYubiAuth("1234", "fdsaffqaf4vrc2q3cds=")
if err != nil {
// probably an invalid key was given
log.Fatalln(err)
}
// verify an OTP string
result, ok, err := yubiAuth.Verify("ccccccbetgjevivbklihljgtbenbfrefccveiglnjfbc")
if err != nil {
log.Fatalln(err)
}
if ok {
// succes!! The OTP is valid!
log.Printf("Used query was: %s\n", result.GetRequestQuery()) // this query string includes the url of the api-server that responded first.
} else {
// fail! The OTP is invalid or has been used before.
log.Println("The given OTP is invalid!!!")
}
Do not verify HTTPS certificate:
// Disable HTTPS cert verification. Use true to enable again.
yubiAuth.HttpsVerifyCertificate(false)
HTTP instead of HTTPS:
// Disable HTTPS. Use true to enable again.
yubiAuth.UseHttps(false)
Custom API server:
// Set a list of n servers, each server as host + path.
// Do not prepend with protocol
yubiAuth.SetApiServerList("api0.server.com/api/verify", "api1.server.com/api/verify", "otherserver.com/api/verify")
Licence
This project is licensed under a Simplified BSD license. Please read the LICENSE file.
Todo
- Test files
- More documentation
- Getters/Setters for some options on the YubiAuth object.
Protocol & Package documentation
This project is implementing a pure-Go Yubico OTP Validation Client and is following the Yubico Validation Protocol Version 2.0.
You will find "go doc"-like package documentation at go.pkgdoc.org.