cli icon indicating copy to clipboard operation
cli copied to clipboard

cf login doesn't work properly when password specified with mutliple special characters.

Open ashlymat opened this issue 10 months ago • 1 comments

Please fill out the issue checklist below and provide ALL the requested information.

  • [ x] I reviewed open and closed github issues that may be related to my problem.
  • [ x] I tried updating to the latest version of the CF CLI to see if it fixed my problem.
  • [ ] I attempted to run the command with CF_TRACE=1 to help debug the issue.
  • [ ] I am reporting a bug that others will be able to reproduce.

Describe the bug and the command you saw an issue with Command CF login I have an application that calls cf cli internally. I run cf login -u username -p password When the password has special characters , cf login fails. For eg., for demo purpose let's say imaginary password "-ig@ZlHDVZl_"

cf login -o myOrg -s mySpace -u devUser1 -p "-ig@ZlHDVZl_"

What happened It throws following error

Incorrect Usage: expected argument for flag `-p', but got option `-ig@ZlHDVZl_'

NAME:
   login - Log user in

This error seems to differ for different passwords. Escaping the characters didn't work as well. But the same password works via interactive cf login.

Expected behavior cf login should work via -u and -p options when password has special characters

Exact Steps To Reproduce Steps to reproduce the behavior; include the exact CLI commands and verbose output:

  1. Run cf login -u username -p password with plenty of special characters in password especially "?" and "$_"
  2. See error
  3. Run interactive cf login and enter username and password on prompt, don't see error.

Provide more context

  • platform and shell details ( e.g. Mac OS 14.2 Built in terminal)
  • version of the CLI you are running : 8.9.0+c23186c.2024-12-02
  • version of the CC API Release you are on 3.186.0

What could be the reason for this behaviour? Do you have any recommendations on special characters in passwords when used directly in shell command?

ashlymat avatar Feb 12 '25 11:02 ashlymat

Thanks for raising this @ashlymat. As a workaround you could use

cf auth <username>

and provide the password via the CF_PASSWORD environment variable (ensuring it is escaped properly). See cf auth --help.

Alternatively you could try and escape the password itself as described in the example

   cf login -u [email protected] -p "\"password\"" (escape quotes if used in password)

Samze avatar May 28 '25 16:05 Samze