- Notifications
You must be signed in to change notification settings - Fork789
Add ability to set encryption keys from config#683
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Can you summarize the breaking changes? Is it just the default |
Yes, that is correct, just the signature change on If you're going to publish this as a breaking release, you may also consider changing |
Hello, |
@JuanDMeGon Many cloud based hosting services, like Heroku, provide a web based interface where you can setup environment variables. Those variables are then available automatically on all instances (servers). No need to use the |
When moving from v6 to v7, there were two main changes:
I've updated theupgrade guide to reflect this. Most other changes are listed in thechangelog. |
@Sephster Awesome! Thanks for jumping in on this discussion. 👍 |
joelharkes commentedAug 9, 2018
I have tried this in v6.0.6 but why doesn't it work? I have tried even copying the passport.php config in my laravel project? Or is this for a v7? |
joelharkes commentedAug 9, 2018
Nevermind, Found that in dotEnv file i need to escape backslash (contrary to .yml files for docker compose). after escaping \n => \n it works. |
warren32 commentedNov 22, 2018
Anybody having issues after updating |
joelharkes commentedNov 23, 2018
You know there should just be a default public and private key configured. way handier for first time laravel users. maybe just add warning or fail when the app env is not local or when it is production. but i'm probably not the first to offer this idea? |
pqt commentedJan 22, 2019 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Just wanted to chime in@reinink, thank you for this. I love this contribution and it has been a life saver more times than I can count now. ❤️ |
samuthojo commentedJan 29, 2019
@reinink I have added the keys in Config Vars on heroku. But then how to tell laravel to load the keys from env instead of looking them up from the file system. |
Export the configuration using vendor:publish and make sure your env vars match the vars in the configuration file. |
J5Dev commentedFeb 12, 2019 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Maybe a stupid question, but I am fine with publishing the config file and then having the keys set as env vars, however, at which point should the keys be generated, and where? Example, we have an app that can be deployed per client, so each deployment will need its own keys (Password grant). We can have the config file in our source control, but do we need to just run the install command locally to get keys each time we want a new set (for a new client). or... can this be somehow incorporated into our deployment scripts. (We are running the app as a stateless instance, with no file storage at all) |
@J5Dev it's best that you ask this on a support channel: My suggestion would be to do it in your first deploy manually or if you have a dynamic deploy incorporate it by adding an if check around the bash script (if you're using that) that checks if the files exist already. |
joelharkes commentedFeb 14, 2019
@J5Dev you should generate them once for a single environment. if you change keys, than after update you wont be able to decrypt the encrypted cookies and access token anymore. so everybody will be logged out.. |
lkmadushan commentedMar 24, 2019
I’m getting this error when i’m configuring passport encryption keys from .env |
lkmadushan commentedMar 24, 2019 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
|
This was added inlaravel/passport#683
This was added inlaravel/passport#683
YassineChe commentedDec 2, 2020
Hello, can anyone help Trying to generate tokens via Laravel 8 Passport by sending an Http Request to the endpoint, (using laravel valet to deploy apps) https://project.test/oauth/token my composer : I get this exception: It was not possible to parse your key, without specifying the reason why, I tried to google it i found nothing, stick with this for days. |
erikverheij commentedDec 2, 2020
@YassineChe; I've experienced a similar error a while ago when I tried to run my Laravel in PHP 8. Switching back to 7.x fixed it for me for the moment. |
@YassineChe please make sure you're running the very latest versions of Passport, lcobucci/jwt and OAuth2 Server. If that doesn't helps please open an issue. |
joelharkes commentedDec 3, 2020
i have been experiencing some issues on with |
Which issues? All should be resolved in the latests versions. |
Uh oh!
There was an error while loading.Please reload this page.
Currently the only way to set encryption keys in Passport is with local files (
/storage/oauth-private.keyand/storage/oauth-public.key). However, this can be problematic in multi-server setups, where the same keys must be shared across multiple systems. In those situations, it's better to use environment variables. This PR adds the ability to do that.The PHP League's OAuth 2.0 Server library supports passing either a file path or text version of the key to their
CryptKeyclass. It does this by doing a regular expression to check if the string provided matches a RSA key pattern. If yes, it automatically saves the key to a temporary file, otherwise it treats the string as a file path. Unfortunately there was a bug with this regular expression in version 6 of the League's library, which is why this also includes an upgrade to version 7.One gnarly thing here is dealing with line returns in the environment variables. Many services allow line returns (ie. Heroku), but the
vlucas/phpdotenvlibrary does not. To support this functionality locally, this PR automatically converts all\ninstances to proper line returns. Here is how you would define this in the.envfile: