This commit adds support for the oauth [device-code](https://auth0.com/docs/get-started/authentication-and-authorization-flow/device-authorization-flow) login flow when authenticating against the official registry. This is achieved by adding `cli/internal/oauth`, which contains code to manage interacting with the Docker OAuth tenant (`login.docker.com`), including launching the device-code flow, refreshing access using the refresh-token, and logging out. The `OAuthManager` introduced here is also made available through the `command.Cli` interface method `OAuthManager()`. In order to maintain compatibility with any clients manually accessing the credentials through `~/.docker/config.json` or via credential helpers, the added `OAuthManager` uses the retrieved access token to automatically generate a PAT with Hub, and store that in the credentials. Signed-off-by: Laura Brehm <laurabrehm@hey.com>
15 lines
287 B
Go
15 lines
287 B
Go
package browser
|
|
|
|
import (
|
|
"errors"
|
|
"os/exec"
|
|
)
|
|
|
|
func openBrowser(url string) error {
|
|
err := runCmd("xdg-open", url)
|
|
if e, ok := err.(*exec.Error); ok && e.Err == exec.ErrNotFound {
|
|
return errors.New("xdg-open: command not found - install xdg-utils from ports(8)")
|
|
}
|
|
return err
|
|
}
|