From ef5083cfb4384b622232ba73fc80aa4d1ed3879a Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Mon, 11 Sep 2023 15:05:30 +0200 Subject: [PATCH] Fix passwordless login on official bitwarden instance --- agent/bitwarden/auth.go | 2 +- agent/bitwarden/http.go | 1 + agent/bitwarden/{paswordless.go => passwordless.go} | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) rename agent/bitwarden/{paswordless.go => passwordless.go} (92%) diff --git a/agent/bitwarden/auth.go b/agent/bitwarden/auth.go index 3b2f298..695fc47 100644 --- a/agent/bitwarden/auth.go +++ b/agent/bitwarden/auth.go @@ -144,7 +144,7 @@ func LoginWithDevice(ctx context.Context, email string, cfg *config.Config, vaul case <-timeoutChan: return LoginResponseToken{}, crypto.MasterKey{}, "", fmt.Errorf("timed out waiting for device to be authorized") default: - authRequestData, err := GetAuthRequest(ctx, data.ID, cfg) + authRequestData, err := GetAuthResponse(ctx, accessCode, data.ID, cfg) if err != nil { log.Error("Could not get auth request: %s", err.Error()) } diff --git a/agent/bitwarden/http.go b/agent/bitwarden/http.go index 9d06e79..610879f 100644 --- a/agent/bitwarden/http.go +++ b/agent/bitwarden/http.go @@ -99,6 +99,7 @@ func makeAuthenticatedHTTPRequest(ctx context.Context, req *http.Request, recv i if token, ok := ctx.Value(AuthToken{}).(string); ok { req.Header.Set("Authorization", "Bearer "+token) } + req.Header.Set("device-type", deviceType()) res, err := httpClient.Do(req) if err != nil { diff --git a/agent/bitwarden/paswordless.go b/agent/bitwarden/passwordless.go similarity index 92% rename from agent/bitwarden/paswordless.go rename to agent/bitwarden/passwordless.go index fdc6036..40c7062 100644 --- a/agent/bitwarden/paswordless.go +++ b/agent/bitwarden/passwordless.go @@ -104,3 +104,9 @@ func CreateAuthRequest(ctx context.Context, code string, deviceIdentifier string return authrequestData, nil } } + +func GetAuthResponse(ctx context.Context, code string, requestUUID string, config *config.Config) (AuthRequestData, error) { + var authRequest AuthRequestData + err := authenticatedHTTPGet(ctx, config.ConfigFile.ApiUrl+"/auth-requests/"+requestUUID+"/response?code="+code, &authRequest) + return authRequest, err +}