Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How do you add an extra claim? #198

Open
MartijnBUZ opened this issue Sep 5, 2024 · 1 comment
Open

How do you add an extra claim? #198

MartijnBUZ opened this issue Sep 5, 2024 · 1 comment

Comments

@MartijnBUZ
Copy link

MartijnBUZ commented Sep 5, 2024

I get a working JWT token, but I want to add extra data to it:

{
 "...": "...",
  "sub": "myname",
  "scopes": [
    "messaging"
  ],
  "my-own-added-key": "this is a neat custom value"
}

I've found Lcobucci\JWT\Builder::withClaim in the code which seems exactly what I need, but there is no way for my to apply it. For some reason everything is final, so I can't apply the Open/Closed principle anywhere. I'm not looking to rewrite half this tool, I just need a small hook to add a little data.

  • The events that exists (OAuth2Events) dont offer anything useful.
  • Altering the build cant, its incorrectly final anyway.
  • cant create a custom AccessToken, the current one is incorrectly final
  • None of the managers are usefull
  • None of the builds can be configured (and are incorrectly marked as final)
  • There is no way to alter an accesstoken to have something like $customClaims which could be picked up in the AccessTokenTrait again.
  • 'RelatedTo' must be a string. Using a simplified array here would solve a lot

Is there a reason this is so hard? I dont mind creating some code to implement this, but I'd like to know if that is worth my time.

@MartijnBUZ
Copy link
Author

I've been searching for a subtle way to implement this, but this turns out to be a bit challenging. The AccessTokenTrait::convertToJwt has service (or manager) logic, but is placed in a entity structure. IMO an entity should just be the definition of a Thing. Building and doing stuff is service (or manager) logic.

Something like a league.oauth2_server.event.token_creation_claims_added would be perfect. Or just something in the builder I could hook to. But now it instantly goes to __tostring.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant