summaryrefslogtreecommitdiff
path: root/pkg/vpn/bonafide/bonafide.go
diff options
context:
space:
mode:
authorkali kaneko (leap communications) <kali@leap.se>2020-08-18 18:05:45 +0200
committerkali kaneko (leap communications) <kali@leap.se>2020-08-20 20:27:46 +0200
commitb9cae0b715ce34cfb0b7f85f023c31ef8ddd54d3 (patch)
treece8ff309c26150604e96eb9c5cd41cd61ff48470 /pkg/vpn/bonafide/bonafide.go
parenta10c5ecd2b4bba6814fd66f0ec1997938d95bf92 (diff)
[feat] cache authentication token
Diffstat (limited to 'pkg/vpn/bonafide/bonafide.go')
-rw-r--r--pkg/vpn/bonafide/bonafide.go22
1 files changed, 18 insertions, 4 deletions
diff --git a/pkg/vpn/bonafide/bonafide.go b/pkg/vpn/bonafide/bonafide.go
index dd8c597..b81fd84 100644
--- a/pkg/vpn/bonafide/bonafide.go
+++ b/pkg/vpn/bonafide/bonafide.go
@@ -114,8 +114,18 @@ func New() *Bonafide {
return b
}
+/* NeedsCredentials signals if we have to ask user for credentials. If false, it can be that we have a cached token */
func (b *Bonafide) NeedsCredentials() bool {
- return b.auth.needsCredentials()
+ if !b.auth.needsCredentials() {
+ return false
+ }
+ /* try cached */
+ /* TODO cleanup this call - maybe expose getCachedToken instead of relying on empty creds? */
+ _, err := b.auth.getToken("", "")
+ if err != nil {
+ return true
+ }
+ return false
}
func (b *Bonafide) DoLogin(username, password string) (bool, error) {
@@ -136,9 +146,13 @@ func (b *Bonafide) GetPemCertificate() ([]byte, error) {
if b.auth == nil {
log.Fatal("ERROR: bonafide did not initialize auth")
}
- if b.auth.needsCredentials() && b.token == nil {
- log.Println("Needs token, but token is empty")
- return nil, errors.New("Needs to login, but it was not logged in. Please, restart the application and report it if it continues happening")
+ if b.auth.needsCredentials() {
+ /* try cached token */
+ token, err := b.auth.getToken("", "")
+ if err != nil {
+ return nil, errors.New("BUG: This service needs login, but we were not logged in.")
+ }
+ b.token = token
}
req, err := http.NewRequest("POST", b.getURL("certv3"), strings.NewReader(""))