I'm sorry that I'm not able to meet your requirements here. Your use-case is one that I'm actually going to be focusing on next year, but one that I don't fully support "out-of-the-box" at the moment. Namely: named user licenses, better subscription support, and a hosted customer-facing portal.
But the good news is that Keygen can currently support this model, just not in the most ideal or straight forward way.
> In my scenario, when an organization purchases a subscription with 10 seats, they need to assign which user identities are associated with each available seat.
Assigning a user maximum isn't currently supported; only a machine maximum. Right now, what my customers with a similar model as yours do, is to use the user's CIAM ID as the machine "fingerprint" and activate them that way -- that way Keygen can validate that user ID X has permission to use license key Y, as well as set limitations on the number of users per-license. (In hindsight, I wish I named the "machine" resource something more generic, because in the real world it's used for a lot more than just machines... maybe for v2. :])
You can hide the license from your customer by storing the license identifiers in your CIAM's user metadata, and then hitting Keygen's API after the user has authenticated and you're able to read those metadata values. E.g. storing the license ID, key and the license's API token is typical.
The license assignment itself would be done after purchase, using e.g. Stripe webhooks to tie a Stripe subscribe event to a Keygen license creation event, assigning any relevant IDs between the 2 services using each resource's metadata. (Or it could be done inline with your purchasing code.)
This could all be done server-side, or mostly client-side, or a mixture.
> I think Keygen lacks the ability for the purchasing end-user/customer to manage their own license assignments.
That is correct, at least from a UI perspective. The API fully supports self-management of a license's resources. But we don't yet offer a customer-facing portal for doing that. A customer-facing license management portal would need to be built out by your team, all backed by Keygen's API.
If you hypothetically did build out the portal, it would need the ability to manage a given license's machine resources, which represent your named users on the license. This can be done using an API token for that license, giving permission for you to manage the license via the API. The token could be stored on the CIAM user so that the end-user never knows about any of the Keygen-related values being used in the background.
Being able to offer a customer-facing portal is one of my priorities in 2022, so I will eventually offer this out-of-the-box.