@@ -79,10 +79,6 @@ func newSamlCmd(r *Root) {
7979 return err
8080 }
8181
82- allRoles := credentialexchange .MergeRoleChain (flags .Role , r .rootFlags .RoleChain , flags .IsSso )
83-
84- conf .BaseConfig .RoleChain = allRoles
85-
8682 // now we want to overwrite anything set via the command line
8783 saveRole := flags .Role
8884 if flags .IsSso {
@@ -93,6 +89,8 @@ func newSamlCmd(r *Root) {
9389 SsoCredsEndpointQuery , sc .ssoRoleAccount , sc .ssoRoleName )
9490 }
9591
92+ allRoles := credentialexchange .MergeRoleChain (conf .BaseConfig .Role , conf .BaseConfig .RoleChain , flags .IsSso )
93+
9694 if len (allRoles ) > 0 {
9795 saveRole = allRoles [len (allRoles )- 1 ]
9896 }
@@ -105,21 +103,23 @@ func newSamlCmd(r *Root) {
105103 }
106104
107105 // we want to remove any AWS_* env vars that could interfere with the default config
108- for _ , envVar := range []string {"AWS_PROFILE" , "AWS_ACCESS_KEY_ID" ,
109- "AWS_SECRET_ACCESS_KEY" , "AWS_SESSION_TOKEN" } {
110- os .Unsetenv (envVar )
111- }
106+ // for _, envVar := range []string{"AWS_PROFILE", "AWS_ACCESS_KEY_ID",
107+ // "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"} {
108+ // os.Unsetenv(envVar)
109+ // }
112110
113111 awsConf , err := config .LoadDefaultConfig (ctx )
114112 if err != nil {
115113 return fmt .Errorf ("failed to create session %s, %w" , err , ErrUnableToCreateSession )
116114 }
117115
118116 svc := sts .NewFromConfig (awsConf )
119- webConfig := web .NewWebConf (r .Datadir ).WithTimeout (flags .SamlTimeout )
120- webConfig .CustomChromeExecutable = flags .CustomExecutablePath
117+ webConfig := web .NewWebConf (r .Datadir ).
118+ WithTimeout (flags .SamlTimeout ).
119+ WithCustomExecutable (conf .BaseConfig .BrowserExecutablePath )
121120
122121 return cmdutils .GetCredsWebUI (ctx , svc , secretStore , * conf , webConfig )
122+
123123 },
124124 PreRunE : func (cmd * cobra.Command , args []string ) error {
125125 if flags .ReloadBeforeTime != 0 && flags .ReloadBeforeTime > r .rootFlags .Duration {
@@ -183,11 +183,15 @@ func samlInitConfig(customPath string) (*ini.File, error) {
183183}
184184
185185func ConfigFromFlags (fileConfig * credentialexchange.CredentialConfig , rf * RootCmdFlags , sf * SamlCmdFlags , user string ) error {
186-
186+ d := fileConfig .Duration
187+ // 900 is the default
188+ if rf .Duration != 900 {
189+ d = rf .Duration
190+ }
187191 flagSamlConf := & credentialexchange.CredentialConfig {
188192 ProviderUrl : sf .ProviderUrl ,
189193 PrincipalArn : sf .PrincipalArn ,
190- Duration : rf . Duration ,
194+ Duration : d ,
191195 AcsUrl : sf .AcsUrl ,
192196 IsSso : sf .IsSso ,
193197 SsoRegion : sf .SsoRegion ,
@@ -198,7 +202,7 @@ func ConfigFromFlags(fileConfig *credentialexchange.CredentialConfig, rf *RootCm
198202 StoreInProfile : rf .StoreInProfile ,
199203 Role : sf .Role ,
200204 // RoleChain is added in the command function
201- // RoleChain: allRoles ,
205+ RoleChain : rf . RoleChain ,
202206 Username : user ,
203207 CfgSectionName : rf .CfgSectionName ,
204208 ReloadBeforeTime : sf .ReloadBeforeTime ,
@@ -207,10 +211,13 @@ func ConfigFromFlags(fileConfig *credentialexchange.CredentialConfig, rf *RootCm
207211 if err := mergo .Merge (& fileConfig .BaseConfig , flagBaseConfig , mergo .WithOverride ); err != nil {
208212 return err
209213 }
214+
210215 baseConf := fileConfig .BaseConfig
211216 if err := mergo .Merge (fileConfig , flagSamlConf , mergo .WithOverride , mergo .WithOverrideEmptySlice ); err != nil {
212217 return err
213218 }
219+
214220 fileConfig .BaseConfig = baseConf
221+ fileConfig .Duration = d
215222 return nil
216223}
0 commit comments