Webauthn credentials cannot be stored #8532

Closed
opened 2025-11-02 08:09:59 -06:00 by GiteaMirror · 0 comments
Owner

Originally created by @johchur on GitHub (Feb 9, 2022).

Gitea Version

1.16.1

Git Version

No response

Operating System

No response

How are you running Gitea?

Standard docker image gitea/gitea:1.16.1 on a linux system with postgres 11 as backend db. This is on a fresh installation.

Database

PostgreSQL

Can you reproduce the bug on the Gitea demo site?

No

Log Gist

gitea-app | 2022/02/09 10:13:05 models/db/context.go:127:Insert() [I] [SQL] INSERT INTO webauthn_credential (name,lower_name,user_id,credential_id,public_key,attestation_type,aaguid,sign_count,clone_warning,created_unix,updated_unix) VALUES (?,?,?,?,?,?,?,?,?,?,?) [T110 t110 1 9A6R5QAM4ES5CDD5BCMEL80BQCB9J0UKL5HGR4098AH7C8PE2LVE3N864ILC1OAACGSB4I5KCMT7T5RDMTCPL56ER89BA166N0VAIM903JL5KGPB6ADH9LCPC4DMR9GOHD4MTBQBUQT1JLRRHEACNCL0L695M094HLKV7CB61U6NOLPGE8TODPS1JHV1BP3127R5OTK75EBBAGH0NPKQHKTPS649NAP0KFQT4GKJQ8UPSU5D0TAEK2UPNCRLBK1VP82C52F35KPET3K8GNRBFDTSVV61R0FIG6LSF5JSLR539VN0SKEG==== [165 1 2 3 38 32 1 33 88 32 235 51 58 139 134 235 98 148 21 243 162 113 11 106 37 18 46 188 13 122 109 36 3 48 72 131 246 81 31 1 95 105 34 88 32 165 217 66 171 0 203 132 228 25 135 17 201 130 53 221 228 42 87 3 237 215 246 17 32 208 151 29 100 242 9 140 131] packed [218 119 111 57 246 200 74 137 178 82 29 134 19 122 70 186] 852 false 1644397985 1644397985] - 734.7µs gitea-app | 2022/02/09 10:13:05 ...security/webauthn.go:103:WebauthnRegisterPost() [E] CreateCredential: Error 1406: Data too long for column 'credential_id' at row 1

Description

I cannot register any of my fido2 token in gitea 1.16.
The credential id constructed for my tokens is longer than the 255 bytes the database backends can store. This is tested on MySQL and PostgreSQL.
On SQLLite used on https://try.gitea.io/ it is working, since length is not checked there.

CredentialId from the Attestation Object on my local setup:
So2y6VYjuFY1pVss6qAL0xaZg9SpYw2QCUKidiMuFX7h3QYkqsDhSmQ4ski0Zbp-l223WZqUztoStQTGuD6pWSAc6lpDKzKbFNWZYRttphiLSW6vS_a6Gdd7i5TLsqCpklsBJI1p87FmD418VzByO4bngZx-FeRhEfZcdocrlrVCIL5pqNO54YibqyCj9dJCk9I9nnitB1TqC9m7N1XQP8oEwonjLTLujoiF9re3vP_MHYHygavHlnyuyjT-4OUd

This string is procesed as follows:

  • "github.com/duo-labs/webauthn/webauthn": base64.RawURLEncoding.DecodeString
  • Gitea webauthn.go: base32.HexEncoding.EncodeToString

This results in the string of the log of length 312.

Tested with a TrustKey T110 and a TrustKey T120.

Screenshots

No response

Originally created by @johchur on GitHub (Feb 9, 2022). ### Gitea Version 1.16.1 ### Git Version _No response_ ### Operating System _No response_ ### How are you running Gitea? Standard docker image gitea/gitea:1.16.1 on a linux system with postgres 11 as backend db. This is on a fresh installation. ### Database PostgreSQL ### Can you reproduce the bug on the Gitea demo site? No ### Log Gist gitea-app | 2022/02/09 10:13:05 models/db/context.go:127:Insert() [I] [SQL] INSERT INTO `webauthn_credential` (`name`,`lower_name`,`user_id`,`credential_id`,`public_key`,`attestation_type`,`aaguid`,`sign_count`,`clone_warning`,`created_unix`,`updated_unix`) VALUES (?,?,?,?,?,?,?,?,?,?,?) [T110 t110 1 9A6R5QAM4ES5CDD5BCMEL80BQCB9J0UKL5HGR4098AH7C8PE2LVE3N864ILC1OAACGSB4I5KCMT7T5RDMTCPL56ER89BA166N0VAIM903JL5KGPB6ADH9LCPC4DMR9GOHD4MTBQBUQT1JLRRHEACNCL0L695M094HLKV7CB61U6NOLPGE8TODPS1JHV1BP3127R5OTK75EBBAGH0NPKQHKTPS649NAP0KFQT4GKJQ8UPSU5D0TAEK2UPNCRLBK1VP82C52F35KPET3K8GNRBFDTSVV61R0FIG6LSF5JSLR539VN0SKEG==== [165 1 2 3 38 32 1 33 88 32 235 51 58 139 134 235 98 148 21 243 162 113 11 106 37 18 46 188 13 122 109 36 3 48 72 131 246 81 31 1 95 105 34 88 32 165 217 66 171 0 203 132 228 25 135 17 201 130 53 221 228 42 87 3 237 215 246 17 32 208 151 29 100 242 9 140 131] packed [218 119 111 57 246 200 74 137 178 82 29 134 19 122 70 186] 852 false 1644397985 1644397985] - 734.7µs gitea-app | 2022/02/09 10:13:05 ...security/webauthn.go:103:WebauthnRegisterPost() [E] CreateCredential: Error 1406: Data too long for column 'credential_id' at row 1 ### Description I cannot register any of my fido2 token in gitea 1.16. The credential id constructed for my tokens is longer than the 255 bytes the database backends can store. This is tested on MySQL and PostgreSQL. On SQLLite used on https://try.gitea.io/ it is working, since length is not checked there. CredentialId from the Attestation Object on my local setup: So2y6VYjuFY1pVss6qAL0xaZg9SpYw2QCUKidiMuFX7h3QYkqsDhSmQ4ski0Zbp-l223WZqUztoStQTGuD6pWSAc6lpDKzKbFNWZYRttphiLSW6vS_a6Gdd7i5TLsqCpklsBJI1p87FmD418VzByO4bngZx-FeRhEfZcdocrlrVCIL5pqNO54YibqyCj9dJCk9I9nnitB1TqC9m7N1XQP8oEwonjLTLujoiF9re3vP_MHYHygavHlnyuyjT-4OUd This string is procesed as follows: - "github.com/duo-labs/webauthn/webauthn": base64.RawURLEncoding.DecodeString - Gitea webauthn.go: base32.HexEncoding.EncodeToString This results in the string of the log of length 312. Tested with a TrustKey T110 and a TrustKey T120. ### Screenshots _No response_
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#8532