cli icon indicating copy to clipboard operation
cli copied to clipboard

CLI gives 403 on MacOS when given valid credentials

Open larsyencken opened this issue 1 year ago • 4 comments

Problem

On my Mac the CLI fails with 403 Invalid Application-ID or API key when doing algolia indices list, or most operations, when given correct credentials.

The credentials were verified on a comparison Linux system (Ubuntu 22.04.04 LTS amd64) with identical Algolia CLI release version and everything worked smoothly.

Params

  • Algolia CLI: 1.6.3
  • System: MacOS Sonoma 14.2.1

Side notes

  • Although most operations 403, algolia profile list works and correctly lists the number of indices alongside the credentials

larsyencken avatar Mar 12 '24 16:03 larsyencken

Hello @larsyencken and thanks for your report,

In both case, are you passing the Algolia credentials to the CLI through the flags (--api-key / --application-id) or using a profile? If you are using a profile, could you check the profile file content on the MacOS system? I suspect a bug in the retro-compatibility of the profile format, since we recently changed some fields name in the profile (api_key vs admin_api_key). Thanks!

clemfromspace avatar Mar 22 '24 09:03 clemfromspace

I change admin_api_key to api_key in config.toml and it works

tonlam avatar Apr 30 '24 01:04 tonlam

I'm getting the same thing from a "just brew installed algolia-cli", and from building from source here:

algolia-cli dowideit.sven$ ./algolia profile list
NAME        APPLICATION ID     NUMBER OF INDICES  DEFAULT
sandbox     8<----snip  15                 
production  8<----snip         62                 ✓
algolia-cli dowideit.sven$ ./algolia indices list
Algolia API error [403] Invalid Application-ID or API key

my ~/.config/algolia/config.toml file only has api_key entries, and adding an admin_api_key value doesn't help either

is there something I can do quickly to debug, or should I start reading the code?

I do get the same issue when I use the two cli params, and the same values work fine for some go code i've been using for other purposes.

SvenDowideit avatar Jun 06 '24 06:06 SvenDowideit

I started debugging this, and may be running into a combination of an env var being set, and that error not telling me enough to realise it ...

func (p *Profile) GetAPIKey() (string, error) {
	if os.Getenv("ALGOLIA_API_KEY") != "" {
		return os.Getenv("ALGOLIA_API_KEY"), nil
	}

mmm, I didn't realise / know that the API key in the config file was being over-ridden from the env, and thus didn't realise the env vars were pointing to a different Algolia env, and so the config defaul env was then using the other env's API key...

ideally, the error message should be able to give some hints to the Algolia env and Key that is failing - I'll keep looking at the code tho :)

(commenting out the env var bits helps it work for me)

or perhaps just having a verbose mode that tells the user that the env var value is over-riding the value in the config?

SvenDowideit avatar Jun 17 '24 04:06 SvenDowideit