ipn: add Login backend command for sign-in with token

The StartLoginInteractive command is for delegating the sign-in flow
to a browser. The Android Gooogle Sign-In SDK inverts the flow by
giving the client ID tokens.

Add a new backend command for accepting such tokens by exposing the existing
controlclient.Client.Login support for OAuth2 tokens. Introduce a custom
TokenType to distinguish ID tokens from other OAuth2 tokens.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-07-13 22:13:11 +02:00
parent 969206fe88
commit 6e8f0860af
6 changed files with 48 additions and 0 deletions

View File

@ -9,6 +9,7 @@ import (
"testing"
"time"
"golang.org/x/oauth2"
"tailscale.com/tstest"
)
@ -177,4 +178,10 @@ func TestClientServer(t *testing.T) {
h.Logout()
flushUntil(NeedsLogin)
h.Login(&oauth2.Token{
AccessToken: "google_id_token",
TokenType: GoogleIDTokenType,
})
flushUntil(Running)
}