-
-
Notifications
You must be signed in to change notification settings - Fork 496
Increase length of JWT secret to avoid errors in lcobucci/jwt ^4.2 #1124
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
Conversation
Thanks for the PR 😍 How to test these changes in your application
Diff between recipe versionsIn order to help with the review stage, I'm in charge of computing the diff between the various versions of patched recipes. symfony/mercure-bundle0.1 vs 0.2diff --git a/symfony/mercure-bundle/0.1/config/packages/mercure.yaml b/symfony/mercure-bundle/0.2/config/packages/mercure.yaml
index d1947d1..17aaa0c 100644
--- a/symfony/mercure-bundle/0.1/config/packages/mercure.yaml
+++ b/symfony/mercure-bundle/0.2/config/packages/mercure.yaml
@@ -1,4 +1,5 @@
mercure:
+ enable_profiler: '%kernel.debug%'
hubs:
default:
url: '%env(MERCURE_PUBLISH_URL)%' 0.2 vs 0.3diff --git a/symfony/mercure-bundle/0.2/config/packages/mercure.yaml b/symfony/mercure-bundle/0.3/config/packages/mercure.yaml
index 17aaa0c..f2a7395 100644
--- a/symfony/mercure-bundle/0.2/config/packages/mercure.yaml
+++ b/symfony/mercure-bundle/0.3/config/packages/mercure.yaml
@@ -1,6 +1,8 @@
mercure:
- enable_profiler: '%kernel.debug%'
hubs:
default:
- url: '%env(MERCURE_PUBLISH_URL)%'
- jwt: '%env(MERCURE_JWT_TOKEN)%'
+ url: '%env(MERCURE_URL)%'
+ public_url: '%env(MERCURE_PUBLIC_URL)%'
+ jwt:
+ secret: '%env(MERCURE_JWT_SECRET)%'
+ publish: '*'
diff --git a/symfony/mercure-bundle/0.2/manifest.json b/symfony/mercure-bundle/0.3/manifest.json
index ba8f74d..9df7a45 100644
--- a/symfony/mercure-bundle/0.2/manifest.json
+++ b/symfony/mercure-bundle/0.3/manifest.json
@@ -7,9 +7,41 @@
},
"env": {
"#1": "See https://symfony.com/doc/current/mercure.html#configuration",
- "MERCURE_PUBLISH_URL": "http://mercure/.well-known/mercure",
- "#2": "The default token is signed with the secret key: !ChangeMe!",
- "MERCURE_JWT_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjdXJlIjp7InB1Ymxpc2giOltdfX0.Oo0yg7y4yMa1vr_bziltxuTCqb8JVHKxp-f_FwwOim0"
+ "#2": "The URL of the Mercure hub, used by the app to publish updates (can be a local URL)",
+ "MERCURE_URL": "https://example.com/.well-known/mercure",
+ "#3": "The public URL of the Mercure hub, used by the browser to connect",
+ "MERCURE_PUBLIC_URL": "https://example.com/.well-known/mercure",
+ "#4": "The secret used to sign the JWTs",
+ "MERCURE_JWT_SECRET": "!ChangeThisMercureHubJWTSecretKey!"
+ },
+ "docker-compose": {
+ "docker-compose.yml": {
+ "services": [
+ "mercure:",
+ " image: dunglas/mercure",
+ " restart: unless-stopped",
+ " environment:",
+ " SERVER_NAME: ':80'",
+ " MERCURE_PUBLISHER_JWT_KEY: '!ChangeThisMercureHubJWTSecretKey!'",
+ " MERCURE_SUBSCRIBER_JWT_KEY: '!ChangeThisMercureHubJWTSecretKey!'",
+ " # Set the URL of your Symfony project (without trailing slash!) as value of the cors_origins directive",
+ " MERCURE_EXTRA_DIRECTIVES: |",
+ " cors_origins http://127.0.0.1:8000",
+ " # Comment the following line to disable the development mode",
+ " command: /usr/bin/caddy run -config /etc/caddy/Caddyfile.dev",
+ " volumes:",
+ " - mercure_data:/data",
+ " - mercure_config:/config"
+ ],
+ "volumes": ["mercure_data:", "mercure_config:"]
+ },
+ "docker-compose.override.yml": {
+ "services": [
+ "mercure:",
+ " ports:",
+ " - \"80\""
+ ]
+ }
},
"aliases": ["mercure"]
} |
Head branch was pushed to by a user without write access
0d84937
to
c86e065
Compare
The version of the recipe must match an existing release of the target package, so given this is kind of a bugfix I think we should update all existing versions instead |
Sure, 0.1 and 0.2 define the actual token and it is signed with the short key - do I need to update those? I'm not sure it'd cause an error because the exception is thrown when creating the JWT - Unsure if it's thrown when the JWT is already created |
Head branch was pushed to by a user without write access
Head branch was pushed to by a user without write access
b508423
to
c250c26
Compare
Not quite sure what I need to change in the PR to avoid this error - sorry. |
Head branch was pushed to by a user without write access
c250c26
to
cd1e374
Compare
The verification is handled by the mercure hub which is written in Go and uses github.com/golang-jwt/jwt/v4 which does not have such validation, so this is not an issue for now but might be one day. However mercure-bundle 0.1 and 0.2 didn't use lcobucci/jwt so I'd say we don't care at all about these versions. |
No worry, I fear there's nothing we can do, all good for this PR. /cc @fabpot |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just released a patch version of Mercure changing the default key used in dev mode: https://github.com/dunglas/mercure/releases/tag/v0.14.1
Can you please use the same value, so the recipe will work out of the box in dev mode.
Head branch was pushed to by a user without write access
Sure thing @dunglas - updated the PR now. |
/cc @chalasr :) |
@silverbackdan The CI was complaining about the missing table in the PR description (including the MIT license). I took the liberty to add it myself, hope it's ok for you. The check is still red though, can you please try to force-push to retrigger it? |
| Q | A | ------------- | --- | License | MIT | Doc issue/PR | n/a
Head branch was pushed to by a user without write access
d98a2fb
to
c371f40
Compare
Merci |
This PR was merged into the 6.0 branch. Discussion ---------- [Mercure] Update the default JWT secret The secret must now be a key of the same size as the hash output (for instance, 256 bits for "HS256") or larger to avoid error in lcobucci/jwt ^4.2. See: symfony/mercure#89 See: https://github.com/lcobucci/jwt/releases/tag/4.2.0 See: symfony/recipes#1124 Commits ------- 688b84e Update mercure jwt default secret
I'm not sure if I should have added this in a new version or included previous config directories.
But the length of the JWT secret needs to be longer by default
See: symfony/mercure#89
See: https://github.com/symfony/symfony-docs/pull/17259/files
See: symfony/mercure#89
See: https://github.com/lcobucci/jwt/releases/tag/4.2.0