apache / superset

Apache Superset is a Data Visualization and Data Exploration Platform
https://superset.apache.org/
Apache License 2.0
62.51k stars 13.76k forks source link

api login with ldap account ,returns error #27964

Open baiyuxiong opened 6 months ago

baiyuxiong commented 6 months ago

Bug description

curl --location --request POST 'http://127.0.0.1:8088/api/v1/security/login' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Cookie: session=.eJwljktqBDEMRO_idRay9e25TCPbEhPSZKA72WTI3eMh1OoVvKKeZc3zrnu5pR9XvJX9fZZbSWriEbVmqIWNV1IJ2KRTxwSWZpw2NlPJ8MWB5CrI3XlLiswGo4rWzW0IGitXaAqcuY1slLWaIvQ-mQiTCXm2imRE2L2sI99XnP9veOG4zty_Hh_x-So8VGJtepLZbIi4CYAKdW7VvcOUMTKWdzyGH7Gcn3v5_QNPCEKx.ZhTSkg.WdM3dPnPc9Shb1qo4QojKgueBeA' \
--data-raw '{
  "password": "*************",
  "provider": "ldap",
  "refresh": true,
  "username": "ldapuser"
}'

截图_17126423063075

How to reproduce the bug

  1. git clone https://github.com/apache/superset.git
  2. docker compose -f docker-compose-non-dev.yml up -d
  3. enable ldap login
  4. curl login with ldap accout
  5. got error as image above.

Screenshots/recordings

No response

Superset version

master / latest-dev

Python version

3.9

Node version

16

Browser

Chrome

Additional context

No response

Checklist

schoenbl-plwr commented 6 months ago

I'm receiving the same error.

I'm cloning the repo.

I'm adding to the default my superset_config.py:

TALISMAN_ENABLED = False
ENABLE_CORS = True
HTTP_HEADERS={"X-Frame-Options":"ALLOWALL"}

SESSION_COOKIE_SAMESITE = None
ENABLE_PROXY_FIX = True
PUBLIC_ROLE_LIKE_GAMMA = True
FEATURE_FLAGS = {
    "EMBEDDED_SUPERSET": True
}

CORS_OPTIONS = {
  'supports_credentials': True,
  'allow_headers': ['*'],
  'resources':['*'],
  'origins': ['*']
}

I'm running sudo docker-compose -f docker-compose-non-dev.yml up -d

From postman requesting: http://domain/api/v1/security/login This is the payload:

{
  "password": "admin",
  "provider": "db",
  "refresh": true,
  "username": "admin"
}

This is the response:

{
    "message": "Fatal error"
}

When looking at the logs:

2024-04-10 14:58:51,257:ERROR:flask_appbuilder.api:'SupersetApp' object has no attribute 'json_encoder'
superset_app          | Traceback (most recent call last):
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask_appbuilder/api/__init__.py", line 110, in wraps
superset_app          |     return f(self, *args, **kwargs)
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask_appbuilder/security/api.py", line 107, in login
superset_app          |     resp[API_SECURITY_ACCESS_TOKEN_KEY] = create_access_token(
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask_jwt_extended/utils.py", line 169, in create_access_token
superset_app          |     return jwt_manager._encode_jwt_from_config(
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask_jwt_extended/jwt_manager.py", line 506, in _encode_jwt_from_config
superset_app          |     json_encoder=config.json_encoder,
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask_jwt_extended/config.py", line 276, in json_encoder
superset_app          |     return current_app.json_encoder
superset_app          | AttributeError: 'SupersetApp' object has no attribute 'json_encoder'
superset_app          | 76.88.39.186 - - [10/Apr/2024:14:58:51 +0000] "POST /api/v1/security/login HTTP/1.1" 500 31 "-" "PostmanRuntime/7.36.0"
Attachai77 commented 6 months ago

any updates? I have the same error.

Screenshot 2567-04-19 at 10 14 56
square-li commented 6 months ago

I am having the same issue login from API if runing just docker compose up. However when I run something like

export TAG=4.0.0
docker compose -f docker-compose-image-tag.yml up

then I don't have any issues.

marrocksd commented 5 months ago

Posted a workaround here. Have a look! https://github.com/apache/superset/discussions/28138