diff --git a/src/common/security/admiral/authcontext/authcontext.go b/src/common/security/admiral/authcontext/authcontext.go index 1180b13d6..ed567cacb 100644 --- a/src/common/security/admiral/authcontext/authcontext.go +++ b/src/common/security/admiral/authcontext/authcontext.go @@ -170,23 +170,23 @@ func get(client *http.Client, url, token string, username ...string) (*AuthConte } // Login with credential and returns auth context and error -func Login(client *http.Client, url, username, password string) (*AuthContext, error) { +func Login(client *http.Client, url, username, password, token string) (*AuthContext, error) { data, err := json.Marshal(&struct { - Username string `json:"username"` Password string `json:"password"` }{ - Username: username, Password: password, }) if err != nil { return nil, err } - req, err := http.NewRequest(http.MethodPost, buildLoginURL(url), bytes.NewBuffer(data)) + req, err := http.NewRequest(http.MethodPost, buildLoginURL(url, username), bytes.NewBuffer(data)) if err != nil { return nil, err } + req.Header.Add(AuthTokenHeader, token) + return send(client, req) } @@ -228,7 +228,7 @@ func buildSpecificUserAuthCtxURL(url, principalID string) string { strings.TrimRight(url, "/"), principalID) } -// TODO update the url -func buildLoginURL(url string) string { - return strings.TrimRight(url, "/") + "/sso/login" +func buildLoginURL(url, principalID string) string { + return fmt.Sprintf("%s/auth/idm/principals/%s/security-context", + strings.TrimRight(url, "/"), principalID) } diff --git a/src/ui/config/config.go b/src/ui/config/config.go index 5c3a6a0b7..6ef5f9f87 100644 --- a/src/ui/config/config.go +++ b/src/ui/config/config.go @@ -52,6 +52,8 @@ var ( // AdmiralClient is initialized only under integration deploy mode // and can be passed to project manager as a parameter AdmiralClient *http.Client + // TokenReader is used in integration mode to read token + TokenReader pms.TokenReader ) // Init configurations @@ -126,10 +128,11 @@ func initProjectManager() { path = defaultTokenFilePath } log.Infof("service token file path: %s", path) + TokenReader = &pms.FileTokenReader{ + Path: path, + } GlobalProjectMgr = pms.NewProjectManager(AdmiralClient, - AdmiralEndpoint(), &pms.FileTokenReader{ - Path: path, - }) + AdmiralEndpoint(), TokenReader) } // Load configurations diff --git a/src/ui/filter/security.go b/src/ui/filter/security.go index 11bd28182..5f3dcc9c7 100644 --- a/src/ui/filter/security.go +++ b/src/ui/filter/security.go @@ -133,8 +133,13 @@ func (b *basicAuthReqCtxModifier) Modify(ctx *beegoctx.Context) bool { return false } + token, err := config.TokenReader.ReadToken() + if err != nil { + log.Errorf("failed to read solution user token: %v", err) + return false + } authCtx, err := authcontext.Login(config.AdmiralClient, - config.AdmiralEndpoint(), username, password) + config.AdmiralEndpoint(), username, password, token) if err != nil { log.Errorf("failed to authenticate %s: %v", username, err) return false