Hello, We had the same error and we fixed it by adding `Environment="SLURM_JWT=daemon"` to the [Service] section of the unit file (in our case /usr/lib/systemd/system/slurmrestd.service ).
We have a bug (feature?) that makes us unable to use root or slurm user as user for slurmrestd service so maybe you'll encounter that as well. According to the release notes ( https://github.com/SchedMD/slurm/blob/master/NEWS ) this should be starting on version 22.05.0pre1 but it is already the case in our version 21.08.6. We have an administrator user for this can of usage. Our service file is like this: $ cat /usr/lib/systemd/system/slurmrestd.service [Unit] Description=Slurm REST daemon After=network.target munge.service ConditionPathExists=/etc/slurm/slurm.conf [Service] User=slurmadm Type=simple EnvironmentFile=-/etc/sysconfig/slurmrestd Environment="SLURM_JWT=daemon" ExecStart=/usr/sbin/slurmrestd -v -a rest_auth/jwt localhost:6820 ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target Guillaume De: "Chenyang Yan" <memory.ya...@gmail.com> À: slurm-us...@schedmd.com Envoyé: Samedi 19 Mars 2022 14:09:06 Objet: [slurm-users] Slurmrestd authentication failed: Unspecified error Hello, I have met a similar issue with slurmrestd authentication failed error, similar question: [ https://lists.schedmd.com/pipermail/slurm-users/2021-June/007480.html | https://lists.schedmd.com/pipermail/slurm-users/2021-June/007480.html ] I have installed `slurm 21.08.6` on CentOS 7.9.2009 container, basic service is running fine ``` [root@slurmctl supervisor]# ls -l /.dockerenv -rwxr-xr-x. 1 root root 0 Mar 17 23:17 /.dockerenv [root@slurmctl supervisor]# srun --partition normal hostname slurmctl ``` Slurmrestd is compiled with `--enable-slurmrestd` successfully, slurmrestd JWT configuration is as follows: ``` [root@slurmctl slurmctld]# dd if=/dev/random of=/var/spool/slurm/jwt_hs256.key bs=32 count=1 [root@slurmctl slurmctld]# scontrol show config |grep -i auth AuthAltTypes = auth/jwt AuthAltParameters = jwt_key=/var/spool/slurm/jwt_hs256.key AuthInfo = (null) AuthType = auth/munge [root@slurmctl slurmctld]# ll -l /var/spool/slurm/jwt_hs256.key -rw-r--r--. 1 root root 32 Mar 17 23:21 /var/spool/slurm/jwt_hs256.key # start slurmrestd process [root@slurmctl slurmctld]# SLURMRESTD_SECURITY=disable_user_check /usr/sbin/slurmrestd -vvvv [ http://0.0.0.0:19090/ | 0.0.0.0:19090 ] # check process and environ [root@slurmctl slurmctld]# ps -ef |grep slurmrestd root 1235 236 0 23:26 ? 00:00:00 /usr/sbin/slurmrestd -vvvvv [ http://0.0.0.0:19090/ | 0.0.0.0:19090 ] [root@slurmctl slurmctld]# cd /proc/1235/ [root@slurmctl 1235]# cat environ | tr '\0' "\n" TERM=xterm TINI_VERSION=v0.18.0 SHLVL=1 HOSTNAME=slurmctl SUPERVISOR_ENABLED=1 SUPERVISOR_PROCESS_NAME=slurmrestd PWD=/ SUPERVISOR_SERVER_URL=unix:///var/run/supervisor/supervisor.sock SUPERVISOR_GROUP_NAME=slurmrestd PATH=/root/.pyenv/shims:/root/.pyenv/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin HOME=/root SLURMRESTD_SECURITY=disable_user_check _=/usr/bin/supervisord ``` I have generated correct token to request, but slurmrestd log message reported authentication failed: Unspecified error ``` [root@slurmctl 1235]# scontrol token username=slurm SLURM_JWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NDc1NjM2MjAsImlhdCI6MTY0NzU2MTgyMCwic3VuIjoic2x1cm0ifQ.151oD4rdm_AuDFUWc24eKaXgTPAQE_v1ugBzzA8ulNw [root@slurmctl 1235]# token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NDc1NjM2MjAsImlhdCI6MTY0NzU2MTgyMCwic3VuIjoic2x1cm0ifQ.151oD4rdm_AuDFUWc24eKaXgTPAQE_v1ugBzzA8ulNw" [root@slurmctl 1235]# curl [ http://172.17.0.4:19090/openapi | 172.17.0.4:19090/openapi ] -H "X-SLURM-USER-TOKEN: $token" -H "X-SLURM-USER-NAME: slurm" Authentication failure slurmrestd: rest_auth/jwt: slurm_rest_auth_p_authenticate: [[172.17.0.1]:38090] attempting user_name slurm token authentication pass through slurmrestd: error: operations_router: [[172.17.0.1]:38090] authentication failed: Unspecified error slurmrestd: debug2: _on_message_complete_request: [[172.17.0.1]:38090] on_http_request rejected: Unspecified error ``` But! I have found that I'm setting `SLURM_JWT` environment variable for process, whatever token value is authenticated normally ``` # start process with SLURM_JWT [root@slurmctl 1235]# cd /proc/2108/ [root@slurmctl 2108]# cat environ |tr "\0" "\n" TERM=xterm TINI_VERSION=v0.18.0 SHLVL=1 HOSTNAME=slurmctl SLURM_JWT=randomtoken SUPERVISOR_ENABLED=1 SUPERVISOR_PROCESS_NAME=slurmrestd PWD=/ SUPERVISOR_SERVER_URL=unix:///var/run/supervisor/supervisor.sock SUPERVISOR_GROUP_NAME=slurmrestd PATH=/root/.pyenv/shims:/root/.pyenv/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin HOME=/root SLURMRESTD_SECURITY=disable_user_check _=/usr/bin/supervisord # request OK [root@slurmctl 2108]# curl [ http://172.17.0.4:19090/slurm/v0.0.35/jobs | 172.17.0.4:19090/slurm/v0.0.35/jobs ] -H "X-SLURM-USER-TOKEN: everythingvalue......" -H "X-SLURM-USER-NAME: slurm" [ ] [root@slurmctl 2108]# curl [ http://172.17.0.4:19090/slurm/v0.0.35/jobs | 172.17.0.4:19090/slurm/v0.0.35/jobs ] -H "X-SLURM-USER-TOKEN: everythingvalue......" -H "X-SLURM-USER-NAME: errorvalue" [ ] ``` So, I'm confused about JWT authentication. Q1: What is used for the `SLURM_JWT` environment variable, is it required for JWT? Related search from github source repo: [ https://github.com/SchedMD/slurm/search?q=SLURM_JWT | https://github.com/SchedMD/slurm/search?q=SLURM_JWT ] Q2: How to use slurmrestd JWT authentication? -------- Thanks, Chenyang Yan