Got the error "API Key not provided" when call to python API endpoint

Options
manhnam91
manhnam91 Partner, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 11 Partner

I have created a python function API endpoint in API designer, when I run the test query, it works well.

After that, I created an API key for this API service, but when I call the public API endpoint via Postman (i found the guide here: https://doc.dataiku.com/dss/latest/apinode/first-service-apideployer.html) :

URL: mydomain.com/public/api/v1/<api service id>/<endpoint>/run

Header:

Content-Type: application/json; charset=utf-8

Authorization: Basic <my api key>

I got the response:

{
"errorType": "com.dataiku.dip.exceptions.NotAuthenticatedException",
"message": "API Key not provided (Basic xxxxxxxxxxxxxxxxxxxxxxx)",
"detailedMessage": "API Key not provided (Basic xxxxxxxxxxxxxxxxxxxxxxx)",
"detailedMessageHTML": "<span><span class=\"err-msg\">API Key not provided (Basic xxxxxxxxxxxxxxxxxxxxxxx)</span></span>",
"stackTrace": []
}

Even when i checked to "Allow public access to this service (no authentication)", i got the same error.

Anyone know the cause of this error, please help, many thanks.


Operating system used: Ubuntu 20.04

Tagged:

Best Answer

  • manhnam91
    manhnam91 Partner, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 11 Partner
    Answer ✓
    Options

    ah I found the cause, I need to create basic auth by an empty user and the password is the API key first, and I also need to restart the API service after changing the security config

Answers

  • CoreyS
    CoreyS Dataiker Alumni, Dataiku DSS Core Designer, Dataiku DSS Core Concepts, Registered Posts: 1,150 ✭✭✭✭✭✭✭✭✭
    Options

    Thank you for sharing your solution with the Community @manhnam91
    !

  • RichardG
    RichardG Registered Posts: 4 ✭✭✭✭
    Options

    Just a quick remark, although this post is almost two years old. This solution has helped me, but as of today it does not work exactly as described.

    To set up authetication via API key, basic auth is indeed the way to go. But the API key needs to be entered as the user (with empty password) and not as the password.

    This makes a difference because (before Base64 encoding) the tool (e.g. curl, Postman, etc.) adds a colon after the API key in the username case, whereas it is put in front of the API key in the password case.

Setup Info
    Tags
      Help me…