MCPcopy Create free account
hub / github.com/containers/image / getBearerToken

Method getBearerToken

docker/docker_client.go:811–856  ·  view source on GitHub ↗
(ctx context.Context, challenge challenge,
	scopes []authScope)

Source from the content-addressed store, hash-verified

809}
810
811func (c *dockerClient) getBearerToken(ctx context.Context, challenge challenge,
812 scopes []authScope) (*bearerToken, error) {
813 realm, ok := challenge.Parameters["realm"]
814 if !ok {
815 return nil, errors.New("missing realm in bearer auth challenge")
816 }
817
818 authReq, err := http.NewRequestWithContext(ctx, http.MethodGet, realm, nil)
819 if err != nil {
820 return nil, err
821 }
822
823 params := authReq.URL.Query()
824 if c.auth.Username != "" {
825 params.Add("account", c.auth.Username)
826 }
827
828 if service, ok := challenge.Parameters["service"]; ok && service != "" {
829 params.Add("service", service)
830 }
831
832 for _, scope := range scopes {
833 if scope.resourceType != "" && scope.remoteName != "" && scope.actions != "" {
834 params.Add("scope", fmt.Sprintf("%s:%s:%s", scope.resourceType, scope.remoteName, scope.actions))
835 }
836 }
837
838 authReq.URL.RawQuery = params.Encode()
839
840 if c.auth.Username != "" && c.auth.Password != "" {
841 authReq.SetBasicAuth(c.auth.Username, c.auth.Password)
842 }
843 authReq.Header.Add("User-Agent", c.userAgent)
844
845 logrus.Debugf("%s %s", authReq.Method, authReq.URL.Redacted())
846 res, err := c.client.Do(authReq)
847 if err != nil {
848 return nil, err
849 }
850 defer res.Body.Close()
851 if err := httpResponseToError(res, "Requesting bearer token"); err != nil {
852 return nil, err
853 }
854
855 return newBearerTokenFromHTTPResponseBody(res)
856}
857
858// newBearerTokenFromHTTPResponseBody parses a http.Response to obtain a bearerToken.
859// The caller is still responsible for ensuring res.Body is closed.

Callers 1

setupRequestAuthMethod · 0.95

Calls 4

httpResponseToErrorFunction · 0.85
CloseMethod · 0.65
AddMethod · 0.45

Tested by

no test coverage detected