diff options
author | Kevin Lyda <kevin@ie.suberic.net> | 2018-08-10 17:21:02 +0000 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2018-08-10 18:21:02 +0100 |
commit | 3e006c39b0a4411e91e80de261d0e7b5353d44c0 (patch) | |
tree | 57754a0a8b80200eede4d6e5a8c1ae7621a3f393 /cmd | |
parent | 99a01f63f51b73f103cd1e094f1a8e7f35d9d30b (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.go | 15 |
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 { |