REST API: Keycloak "ID" can be trivially confused with Keycloak "preferred_username" which is netcup "Customer number"

  • Prior to implementation of this new REST API using Keycloak for IAM, the only identity customers needed to be aware of was their netcup customer number, used in CCP/SCP.

    However, with Keycloak, we now have to be aware that the customer number is being used as a `username` and that there is a separate `id` unrelated to the customer number.

    If possible, the customer number/username should stay in lockstep with id. And for the time being, this distinction should be clarified in documentation.

  • Hi leee

    thank you (again) for your feedback!

    The CustomerControlPanel and the ServerControlPanel are two different systems with different databases. A date for the centralization of users cannot be specified at this time.

    Please get back to us, if there are any open questions.

    Kind regards
    Sarah & the netcup team

  • Hi [netcup] Sarah G. - thank you for organizing the issues and reaching out to the relevant departments `:D` Looking forward to updates for them.

    Regarding this issue: for clarification, how do CCP and SCP interact with each other here? Is the following guess correct?

    • netcup "customer number" is from CCP,
    • but SCP has a different set of users with its own SCP Keycloak user IDs
    • so CCP "customer number" is used as SCP Keycloak "username" and we log into SCP control panel and SCP Keycloak using CCP customer number

    Would it be possible to also document this somewhere, such as in the authentication part of the REST API documentation?

    An additional question for clarity: are ID numbers in SCP REST API guaranteed to be unique for the duration of their life? In other words:

    Code
    $ netcup auth print-access-token | jq -R 'split(".") | .[1] | @base64d | fromjson | .id'
    "15...." (SCP user ID)

    and

    Code
    $ netcup servers list
    ID       NAME                   HOSTNAME               NICKNAME               DISABLED   TEMPLATE
    728538   v2202505273910341302   hostname.example.com   nickname.example.com   false      1041 (VPS 1000 ARM G11)
    728540   v2202505273910341303   hostname.example.net   nickname.example.net   false      1041 (VPS 1000 ARM G11)

    Are those ID numbers:

    • 15....: User id
    • 728538, 728540: Server id
    • and other IDs including but not limited to: FailoverIPv4 id, FailoverIPv6 id, SSHKey id, VLan id, S3 ids/keys, etc.

    guaranteed to be the same and never change? Or should users of the REST APi always use `GET` methods to list items, find what they want, and reference the ID provided then? What would be the lifetime of that ID if it is considered temporary?

    I also just want to mention these unanswered issues, but I assume you did not get a chance to review and notify the relevant department(s) yet:

    Thank you, and have a great weekend! 🦆

    Einmal editiert, zuletzt von leee (5. Dezember 2025 um 18:33)

  • Hello leee

    You are very welcome – thanks for your participation, we appreciate it! :saint:

    Regarding this issue: for clarification, how do CCP and SCP interact with each other here? Is the following guess correct?

    • netcup "customer number" is from CCP,
    • but SCP has a different set of users with its own SCP Keycloak user IDs
    • so CCP "customer number" is used as SCP Keycloak "username" and we log into SCP control panel and SCP Keycloak using CCP customer number

    Yes, your guess on this is correct!

    Would it be possible to also document this somewhere, such as in the authentication part of the REST API documentation?

    Yes, we will include it – coming soon.

    An additional question for clarity: are ID numbers in SCP REST API guaranteed to be unique for the duration of their life? In other words:

    Code
    $ netcup auth print-access-token | jq -R 'split(".") | .[1] | @base64d | fromjson | .id'
    "15...." (SCP user ID)

    and

    Code
    $ netcup servers list
    ID       NAME                   HOSTNAME               NICKNAME               DISABLED   TEMPLATE
    728538   v2202505273910341302   hostname.example.com   nickname.example.com   false      1041 (VPS 1000 ARM G11)
    728540   v2202505273910341303   hostname.example.net   nickname.example.net   false      1041 (VPS 1000 ARM G11)

    Are those ID numbers:

    • 15....: User id
    • 728538, 728540: Server id
    • and other IDs including but not limited to: FailoverIPv4 id, FailoverIPv6 id, SSHKey id, VLan id, S3 ids/keys, etc.

    guaranteed to be the same and never change? Or should users of the REST APi always use `GET` methods to list items, find what they want, and reference the ID provided then? What would be the lifetime of that ID if it is considered temporary?

    Yes, they are unique. Technically, that are the primary keys in our database. It's guaranteed that they are the same and never change

    Thanks again and kind regards
    Sarah & the netcup team