Hi Werner,
The first thing you should know is that access tokens may be issued to anonymous clients. Then there are clients that have a client_id assigned but aren't actually authenticated, so there is no guarantee that the client is who it claims to be. If DNOA were to embed the client_id into the access token, it would only do so if the client had actually authenticated with the authorization server to obtain that access token, so sometimes the client_id would be empty.
The second thing to be aware of is that once the access token is issued, it (typically) is a bearer token, which means the client may share it with others (they shouldn't, but they could) who may then use it to send requests even though it's a different client.
The only real security that can be always relied on in the access token is the user who authorized it. Knowing the client_id is just gravy. Since your scenarios don't suggest the Resource Server is making security decisions based on the client_id (which is good!) I'd first suggest that you have your clients include their client_id in an HTTP header or the query string, and you then just know it is only an alleged client_id (not authenticated).
If you really need an authenticated client_id, then yes, embedding it in the access_token would probably be the right approach. I'm hesitant to just through it in there, even when it is authenticated, because the use of it by the resource server is often the sign of a faulty security model, IMO.
--
--
Andrew Arnott
"I [may] not agree with what you have to say, but I'll defend to the death your right to say it." - S. G. Tallentyre