Début de la requête POST "/u/create_second_factor_totp.json" depuis 209.249.35.130 le 2020-02-19 à 14:21:20 +0000
Traitement par UsersController#create_second_factor_totp au format JSON
Terminé avec une erreur 500 Internal Server Error en 5 ms (ActiveRecord : 0,0 ms | Allocations : 1781)
Addressable::URI::InvalidURIError (Format de schéma invalide : Our Great Forum)
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/addressable-2.7.0/lib/addressable/uri.rb:901:in `scheme='
Rendu du modèle texte
Modèle texte rendu (Durée : 0,0 ms | Allocations : 1)
« Our Great Forum » est presque le titre du forum défini dans les paramètres système. La valeur réelle ressemble à quelque chose comme « Our Great Forum : Our fine tagline », donc ce qui apparaît dans le journal n’est que la partie avant les deux-points. Je ne vois pas « Our Great Forum » ailleurs dans les paramètres système, donc je suis perplexe quant à la raison pour laquelle il apparaîtrait sans la partie : tagline dans le journal.
Soupir. Il s’agit de la version 2.4.0.beta10 (6301477b4c). Je vais procéder à la mise à jour et leur demander de réessayer. Je modifierai ce message si je parviens à faire essayer à l’utilisateur la dernière version.
C’est tout ce que je vois dans les journaux. Je ne vois pas de trace d’exécution. Cependant, j’obtiens l’erreur simplement en cliquant sur « nouveau authentificateur » dans la section « authentificateurs basés sur des jetons ».
Et c’est la même chose après la dernière mise à niveau.
Pourriez-vous copier la requête sous forme de curl et la poster (en masquant tout PII et les jetons/nonces) afin que nous puissions déterminer si le problème vient du client ou du serveur ?
diff --git a/spec/components/concern/second_factor_manager_spec.rb b/spec/components/concern/second_factor_manager_spec.rb
index 36e4f066ce..a657a0fdc8 100644
--- a/spec/components/concern/second_factor_manager_spec.rb
+++ b/spec/components/concern/second_factor_manager_spec.rb
@@ -47,6 +47,18 @@ RSpec.describe SecondFactorManager do
"otpauth://totp/#{SiteSetting.title}:#{user.email}?secret=#{user_second_factor_totp.data}&issuer=#{SiteSetting.title}"
)
end
+ it 'should handle a colon in the site title' do
+ SiteSetting.title = 'Spaceballs: The Discourse'
+ expect(user.user_second_factors.totps.first.totp_provisioning_uri).to eq(
+ "otpauth://totp/#{URI::escape SiteSetting.title}:#{user.email}?secret=#{user_second_factor_totp.data}&issuer=#{CGI::escape SiteSetting.title}"
+ )
+ end
+ it 'should handle a space before a colon in the site title' do
+ SiteSetting.title = 'Our Spaceballs: The Discourse'
+ expect(user.user_second_factors.totps.first.totp_provisioning_uri).to eq(
+ "otpauth://totp/#{URI::escape SiteSetting.title}:#{user.email}?secret=#{user_second_factor_totp.data}&issuer=#{CGI::escape SiteSetting.title}"
+ )
+ end
end
describe '#authenticate_totp' do
→ RAILS_ENV=test rspec ./spec/components/concern/second_factor_manager_spec.rb
Randomized with seed 47333
...................F......................
Failures:
1) SecondFactorManager#totp_provisioning_uri should handle a space before a colon in the site title
Failure/Error: totp_object.provisioning_uri(user.email)
Addressable::URI::InvalidURIError:
Invalid scheme format: Our Spaceballs
# /home/michael/.rvm/gems/ruby-2.6.3/gems/addressable-2.7.0/lib/addressable/uri.rb:901:in `scheme='
# /home/michael/.rvm/gems/ruby-2.6.3/gems/addressable-2.7.0/lib/addressable/uri.rb:826:in `block in initialize'
# /home/michael/.rvm/gems/ruby-2.6.3/gems/addressable-2.7.0/lib/addressable/uri.rb:2392:in `defer_validation'
# /home/michael/.rvm/gems/ruby-2.6.3/gems/addressable-2.7.0/lib/addressable/uri.rb:823:in `initialize'
# /home/michael/.rvm/gems/ruby-2.6.3/gems/addressable-2.7.0/lib/addressable/uri.rb:138:in `new'
# /home/michael/.rvm/gems/ruby-2.6.3/gems/addressable-2.7.0/lib/addressable/uri.rb:138:in `parse'
# /home/michael/.rvm/gems/ruby-2.6.3/gems/addressable-2.7.0/lib/addressable/uri.rb:607:in `encode'
# /home/michael/.rvm/gems/ruby-2.6.3/gems/rotp-5.1.0/lib/rotp/totp.rb:61:in `provisioning_uri'
# ./app/models/user_second_factor.rb:32:in `totp_provisioning_uri'
# ./spec/components/concern/second_factor_manager_spec.rb:58:in `block (3 levels) in <top (required)>'
Finished in 0.75471 seconds (files took 2.18 seconds to load)
42 examples, 1 failure
Failed examples:
rspec ./spec/components/concern/second_factor_manager_spec.rb:56 # SecondFactorManager#totp_provisioning_uri should handle a space before a colon in the site title
Randomized with seed 47333
Changer l’émetteur modifie les valeurs du jeton, mais comme cela était complètement cassé pour les deux-points, cela ne devrait pas impacter de nouveaux utilisateurs.
Notez que cela fonctionnait auparavant pour les titres contenant un deux-points, comme Spaceballs: The Discourse (cela a bien fonctionné pour moi et j’ai pu l’ajouter à mon téléphone), mais échouait lorsqu’il y avait deux mots avant le deux-points.
(désolé si ce n’était pas très clair dans mon rapport)
Je n’ai pas encore eu confirmation que cela a fonctionné pour l’utilisateur qui se plaignait, mais cela a fonctionné pour moi.
Ce que je ne comprends pas, cependant, c’est que je sais que :
cela a toujours été cassé pour les titres contenant :
si le titre du site change, l’authentificateur est cassé, car il est lié au titre du site
SiteSettings.title n’a pas changé depuis longtemps
UserSecondFactor.where(method: 1) renvoie un tas d’entrées d’août dernier
Je ne comprends pas comment tout cela peut être vrai. Est-ce que changer le titre du site a cassé tous les UserSecondFactor d’authentificateur existants ? ÉDIT : Non, ce n’est pas le cas. Je viens de changer le titre et l’authentificateur 2FA que j’ai créé hier fonctionne toujours.
Bon, je suis assez certain que le titre contenait plusieurs mots et un deux-points depuis toujours (aucune modification dans les journaux depuis au moins mai 2019) et que cela fonctionnait encore en août dernier (car des jetons d’authentification ont été générés à cette époque), mais peu importe. Cela semble fonctionner maintenant et le fait de modifier le titre ne rompt pas les jetons existants, ce qui semble être une victoire.
Merci pour la correction rapide !
5 « J'aime »
j.jaffeux
(Joffrey Jaffeux)
A fermé ce sujet ()
15
Ce sujet a été automatiquement fermé 2 jours après la dernière réponse. De nouvelles réponses ne sont plus autorisées.