aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorKevin Lyda <kevin@ie.suberic.net>2018-08-10 17:21:02 +0000
committerNiall Sheridan <nsheridan@gmail.com>2018-08-10 18:21:02 +0100
commit3e006c39b0a4411e91e80de261d0e7b5353d44c0 (patch)
tree57754a0a8b80200eede4d6e5a8c1ae7621a3f393 /cmd
parent99a01f63f51b73f103cd1e094f1a8e7f35d9d30b (diff)
Add Microsoft auth provider
Microsoft uses JSON Web Tokens (JWT) as OAuth tokens. These can run to many thousands of characters which are too long for TTYs. Work around this by base64-encoding the token and chunk it into smaller pieces. Closes #70
Diffstat (limited to 'cmd')
-rw-r--r--cmd/cashier/main.go15
1 files changed, 13 insertions, 2 deletions
diff --git a/cmd/cashier/main.go b/cmd/cashier/main.go
index f448a25..1ee9455 100644
--- a/cmd/cashier/main.go
+++ b/cmd/cashier/main.go
@@ -1,6 +1,9 @@
package main
import (
+ "bufio"
+ "bytes"
+ "encoding/base64"
"fmt"
"log"
"net"
@@ -46,8 +49,16 @@ func main() {
}
fmt.Print("Enter token: ")
- var token string
- fmt.Scanln(&token)
+ scanner := bufio.NewScanner(os.Stdin)
+ var buffer bytes.Buffer
+ for scanner.Scan(); scanner.Text() != "."; scanner.Scan() {
+ buffer.WriteString(scanner.Text())
+ }
+ tokenBytes, err := base64.StdEncoding.DecodeString(buffer.String())
+ if err != nil {
+ log.Fatalln(err)
+ }
+ token := string(tokenBytes)
cert, err := client.Sign(pub, token, c)
if err != nil {