<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>57266</bug_id>
          
          <creation_ts>2025-12-17 17:55:33 +0300</creation_ts>
          <short_desc>Не работает интеграция с OpenID</short_desc>
          <delta_ts>2025-12-17 18:04:25 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Branch p10</product>
          <component>pve-access-control</component>
          <version>не указана</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Evgeny Shesteperov">alimektor</reporter>
          <assigned_to name="Alexey Shabalin">shaba</assigned_to>
          <cc>darisishe</cc>
          
          <qa_contact name="qa-p10@altlinux.org">qa-p10</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>279202</commentid>
    <comment_count>0</comment_count>
    <who name="Evgeny Shesteperov">alimektor</who>
    <bug_when>2025-12-17 17:55:33 +0300</bug_when>
    <thetext>Версия

- pve-access-control-7.4.3-alt4

Шаги воспроизведения

Настроить OpenID. Для демонстрации я настроил Keycloak на том же узле,
что и PVE:

    # apt-get install -y postgresql-server jq keycloak &amp;&amp; \
    /etc/init.d/postgresql initdb &amp;&amp; \
    systemctl enable --now postgresql &amp;&amp; sleep 5 &amp;&amp; \
    psql -U postgres -c &quot;CREATE USER keycloak WITH PASSWORD &apos;12345678&apos;;&quot; &amp;&amp; \
    psql -U postgres -c &quot;CREATE DATABASE keycloak OWNER keycloak;&quot; &amp;&amp; \
    psql -U postgres -c &quot;GRANT ALL PRIVILEGES ON DATABASE keycloak TO keycloak;&quot; &amp;&amp; \
    systemctl stop ahttpd

    # cp /etc/keycloak/keycloak.conf /etc/keycloak/keycloak.conf-orig &amp;&amp; sed -i -e &quot;s|#db=postgres|db=postgres|g&quot; \
    -e &quot;s|#db-username=keycloak|db-username=keycloak|g&quot; \
    -e &quot;s|#db-password=password|db-password=12345678|g&quot; \
    -e &quot;s|#db-url=jdbc:postgresql://localhost/keycloak|db-url=jdbc:postgresql://localhost/keycloak|g&quot; \
    -e &quot;s|#health-enabled=true|health-enabled=true|g&quot; \
    -e &quot;s|#metrics-enabled=true|metrics-enabled=true|g&quot; \
    -e &quot;s|#hostname=myhostname|hostname=$(hostname)|g&quot; \
    /etc/keycloak/keycloak.conf &amp;&amp; \
    diff -u --color /etc/keycloak/keycloak.conf-orig /etc/keycloak/keycloak.conf

    # cert-sh generate &quot;keycloak&quot; &amp;&amp; l /var/lib/ssl/certs/keycloak.pem

    ## Дождаться &quot;Installed features:...&quot;
    kc.sh start 

    ## Ввести `admin`
    # kc.sh bootstrap-admin user --username admin

    # systemctl enable --now keycloak.service &amp;&amp; sleep 5; systemctl status keycloak.service -l --no-pager

    # JAVA_HOME=$(readlink -f /usr/bin/java | sed &quot;s:bin/java::&quot;)

    # cp /var/lib/ssl/certs/keycloak.pem /etc/pki/ca-trust/source/anchors/ &amp;&amp; update-ca-trust
    # cp /etc/pve/pve-root-ca.pem /etc/pki/ca-trust/source/anchors/ &amp;&amp; update-ca-trust

    # keytool -importcert -alias keycloak -file /var/lib/ssl/certs/keycloak.pem -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit -noprompt

    # /usr/lib/keycloak/bin/kcadm.sh config credentials --server https://$(hostname):8443 --realm master --user admin --password admin

    # /usr/lib/keycloak/bin/kcadm.sh create realms -s realm=pve-realm -s enabled=true

    # /usr/lib/keycloak/bin/kcadm.sh create clients -r pve-realm -s clientId=pve-web-app -s enabled=true -s publicClient=false -s protocol=openid-connect -s &quot;redirectUris=[\&quot;https://$(hostname):8006*\&quot;]&quot; -s &quot;webOrigins=[\&quot;*\&quot;]&quot; -s standardFlowEnabled=true -s directAccessGrantsEnabled=true

    # CLIENT_ID=$(/usr/lib/keycloak/bin/kcadm.sh get clients -r pve-realm --fields id,clientId | jq -r &apos;.[] | select(.clientId==&quot;pve-web-app&quot;) | .id&apos;)

    # SECRET=$(/usr/lib/keycloak/bin/kcadm.sh get clients/$CLIENT_ID/client-secret -r pve-realm | jq .value | xargs)

    # /usr/lib/keycloak/bin/kcadm.sh create users -r pve-realm -s username=testopenid -s firstName=Test -s lastName=OpenID -s email=testopenid@awesome.org -s enabled=true

    # USER_ID=$(/usr/lib/keycloak/bin/kcadm.sh get users -r pve-realm --fields id,username | jq -r &apos;.[] | select(.username==&quot;testopenid&quot;) | .id&apos;)

    # /usr/lib/keycloak/bin/kcadm.sh set-password -r pve-realm --userid $USER_ID --new-password testpass123

    # /usr/lib/keycloak/bin/kcadm.sh update realms/pve-realm -s sslRequired=NONE

    # curl -sk -X POST &quot;https://$(hostname):8443/realms/pve-realm/protocol/openid-connect/token&quot; -H &apos;Content-Type: application/x-www-form-urlencoded&apos; -d &apos;client_id=pve-web-app&apos; -d &quot;client_secret=${SECRET}&quot; -d &apos;username=testopenid&apos; -d &apos;password=testpass123&apos; -d &apos;grant_type=password&apos; | jq

    # echo &quot;Issuer: https://$(hostname):8443/realms/pve-realm&quot; &amp;&amp; \
    # echo &quot;Client ID: pve-web-app&quot; &amp;&amp; \
    # echo &quot;Client Secret Key: $SECRET&quot;

    # pveum realm add keycloak--type openid --issuer-url  https://$(hostname):8443/realms/pve-realm --client-id pve-web-app --client-secret $SECRET

Выполнить вход через keycloak или запрос на PVE:

    # pvesh create /access/openid/auth-url -realm keycloak -redirect-url https://$(hostname):8006

Ожидаемый результат: успешный вход через Keycloak, получена строка
авторизации для Keycloak через pvesh

Фактический результат: 500 ошибка в веб-интерфейсе, pvesh:
Failed to parse server response

В P11 не воспроизводится.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>