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

"The Payload is Invalid" on Dashboard after adding 2nd factor / f2a #2761

Closed
ToeiRei opened this issue Jun 9, 2019 · 15 comments · Fixed by #3975
Closed

"The Payload is Invalid" on Dashboard after adding 2nd factor / f2a #2761

ToeiRei opened this issue Jun 9, 2019 · 15 comments · Fixed by #3975

Comments

@ToeiRei
Copy link

ToeiRei commented Jun 9, 2019

(Note: you don't need to follow this template, nor to keep headlines or bold sentences - they are just there to guide you. Feel free to delete everything. We review every issue even if we don't immediately respond.)

Thanks for filing an issue and for your interest in the project.

Describe the bug
A clear and concise description of what the bug is. If your comment is it doesn't work, we won't know what to do with it.

Screenshots

The payload is invalid. (View: /home/crm/monica/resources/views/auth/validatewebauthn.blade.php)

Zurück zur Seite

Which version are you using:

  • A server you maintain yourself Commit 55f92d6

Additional context

ErrorException thrown with message "The payload is invalid. (View: /home/crm/monica/resources/views/auth/validatewebauthn.blade.php)"

Stacktrace:
#84 ErrorException in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php:195
#83 Illuminate\Contracts\Encryption\DecryptException in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php:195
#82 Illuminate\Encryption\Encrypter:getJsonPayload in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php:136
#81 Illuminate\Encryption\Encrypter:decrypt in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:382
#80 decrypt in /home/crm/monica/app/Models/User/User.php:331
#79 App\Models\User\User:getGoogle2faSecretAttribute in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:446
#78 Illuminate\Database\Eloquent\Model:mutateAttribute in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:346
#77 Illuminate\Database\Eloquent\Model:getAttributeValue in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:319
#76 Illuminate\Database\Eloquent\Model:getAttribute in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1519
#75 Illuminate\Database\Eloquent\Model:__get in /home/crm/monica/vendor/pragmarx/google2fa-laravel/src/Google2FA.php:57
#74 PragmaRX\Google2FALaravel\Google2FA:getGoogle2FASecretKey in /home/crm/monica/vendor/pragmarx/google2fa-laravel/src/Google2FA.php:67
#73 PragmaRX\Google2FALaravel\Google2FA:isActivated in /home/crm/monica/storage/framework/views/fba1246ff83feb12e92e104b06ef696a30489cd7.php:27
#72 include in /home/crm/monica/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:43
#71 Illuminate\View\Engines\PhpEngine:evaluatePath in /home/crm/monica/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:59
#70 Illuminate\View\Engines\CompilerEngine:get in /home/crm/monica/vendor/laravel/framework/src/Illuminate/View/View.php:142
#69 Illuminate\View\View:getContents in /home/crm/monica/vendor/laravel/framework/src/Illuminate/View/View.php:125
#68 Illuminate\View\View:renderContents in /home/crm/monica/vendor/laravel/framework/src/Illuminate/View/View.php:90
#67 Illuminate\View\View:render in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Http/Response.php:42
#66 Illuminate\Http\Response:setContent in /home/crm/monica/vendor/symfony/http-foundation/Response.php:202
#65 Symfony\Component\HttpFoundation\Response:__construct in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Router.php:748
#64 Illuminate\Routing\Router:toResponse in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Router.php:720
#63 Illuminate\Routing\Router:prepareResponse in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Router.php:680
#62 Illuminate\Routing\Router:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30
#61 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/app/Http/Middleware/EnsureEmailIsVerified.php:23
#60 App\Http\Middleware\EnsureEmailIsVerified:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#59 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#58 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php:43
#57 Illuminate\Auth\Middleware\Authenticate:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#56 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#55 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/app/Http/Middleware/CheckCompliance.php:34
#54 App\Http\Middleware\CheckCompliance:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#53 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#52 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/app/Http/Middleware/CheckVersion.php:32
#51 App\Http\Middleware\CheckVersion:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#50 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#49 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/app/Http/Middleware/CheckLocale.php:28
#48 App\Http\Middleware\CheckLocale:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#47 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#46 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41
#45 Illuminate\Routing\Middleware\SubstituteBindings:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#44 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#43 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:75
#42 Illuminate\Foundation\Http\Middleware\VerifyCsrfToken:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#41 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#40 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49
#39 Illuminate\View\Middleware\ShareErrorsFromSession:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#38 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#37 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/app/Http/Middleware/SentryContext.php:43
#36 App\Http\Middleware\SentryContext:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#35 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#34 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:56
#33 Illuminate\Session\Middleware\StartSession:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#32 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#31 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37
#30 Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#29 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#28 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:66
#27 Illuminate\Cookie\Middleware\EncryptCookies:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#26 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#25 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:104
#24 Illuminate\Pipeline\Pipeline:then in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Router.php:682
#23 Illuminate\Routing\Router:runRouteWithinStack in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Router.php:657
#22 Illuminate\Routing\Router:runRoute in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Router.php:623
#21 Illuminate\Routing\Router:dispatchToRoute in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Router.php:612
#20 Illuminate\Routing\Router:dispatch in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:176
#19 Illuminate\Foundation\Http\Kernel:Illuminate\Foundation\Http\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30
#18 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php:65
#17 Barryvdh\Debugbar\Middleware\InjectDebugbar:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#16 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#15 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/fideloper/proxy/src/TrustProxies.php:57
#14 Fideloper\Proxy\TrustProxies:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#13 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#12 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21
#11 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#10 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#9 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21
#8 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#7 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#6 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php:62
#5 Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode:handle in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#4 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#3 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:104
#2 Illuminate\Pipeline\Pipeline:then in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:151
#1 Illuminate\Foundation\Http\Kernel:sendRequestThroughRouter in /home/crm/monica/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:116
#0 Illuminate\Foundation\Http\Kernel:handle in /home/crm/monica/public/index.php:52
@ToeiRei
Copy link
Author

ToeiRei commented Jun 9, 2019

Had to remove the google2fa_secret to gain access again.

@ToeiRei ToeiRei changed the title "The Payload is Invalid" on Dashboard after adding 2nd factor "The Payload is Invalid" on Dashboard after adding 2nd factor / f2a Jun 9, 2019
@Ryonez
Copy link

Ryonez commented Aug 12, 2019

Had to do the same over on mine.

@immanuelfodor
Copy link

This is still an issue when the docker image is built from latest master.

@asbiin
Copy link
Member

asbiin commented Oct 16, 2019

I have found what causes this problem: your mysql instance must be > 5.7
With version 5.6 or less, default size for strings are 191 for varchar, and google2fa_secret column needs 256 varchar size.

So it is not related to monica, or docker, only the version of mysql you will use.

@barthalion
Copy link

Isn't it problem with database schema then? Sounds like something that Monica should set during install.

@asbiin
Copy link
Member

asbiin commented Oct 16, 2019

Sounds like something that Monica should set during install.

Yes it is the case.
See Index Lengths & MySQL / MariaDB here https://laravel.com/docs/6.x/migrations#indexes

@immanuelfodor
Copy link

It's not clear for me now if you're going to set it in an upcoming migration or we should do this manually in the DB.

@immanuelfodor
Copy link

Okay, so I was impatient, and here is my solution.

Step 1 - Upgrade to MariaDB 10.4 (Ubuntu has only 10.1.41 ~ equivalent to MySQL 5.6)

sudo su

apt install -y software-properties-common
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.4/ubuntu bionic main'

apt update
apt upgrade -y
apt install -y mariadb-plugin-connect mariadb-server
# these 2 got kept back on the above upgrade, so we need to gently force

mysql_upgrade
# there are warnings but eventually, it will work without any probs:
# your_monica_db.accounts
# Warning  : Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
# Warning  : Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
# status   : OK

systemctl restart mariadb.service 
# just to make sure :)

mysqld --version
# mysqld  Ver 10.4.8-MariaDB-1:10.4.8+maria~bionic for debian-linux-gnu on x86_64 (mariadb.org binary distribution)

Step 2 - Update the DB to have a longer column for 2FA:

USE your_monica_db;
SHOW CREATE TABLE users;
-- `google2fa_secret` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
ALTER TABLE users MODIFY google2fa_secret VARCHAR(256);
SHOW CREATE TABLE users;
-- `google2fa_secret` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

Step 3 - Enable 2FA, now it works fine, enjoy :)

@asbiin
Copy link
Member

asbiin commented Oct 16, 2019

Well actually I think you could update the column to have a VARCHAR(256) with mysql 5.6 ... I have to inspect it.

@immanuelfodor
Copy link

I think you're right but I've also wanted to update for a long time, it just gave me the push to do it finally 😀

@Ryonez
Copy link

Ryonez commented Oct 16, 2019

Migration should really be handled by the application using the database, in this case Monica. The database doesn't know what you want from it, you have to tell it. Which is better because you know and set the changes you need as the application evolves.

I don't think this issue should be closed as Monica should be the one handling this.

@RCheesley
Copy link

Just installed this fresh from Github and experienced this error as soon as I enabled 2FA. Tried emptying the field contents and setting to 256 varchar but still can't log in, any ideas? Not sure if there's a cache that needs clearing?

@RCheesley
Copy link

Ah, figured it out I think, was running locally without a secure connection, just read the tiny print after wiping my instance and starting again!

@asbiin
Copy link
Member

asbiin commented May 8, 2020

Sorry, it was a really quick fix, it should have been done soon ;)

@github-actions
Copy link

github-actions bot commented May 9, 2021

This issue has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 9, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants