From bf96a721580ddf7e9cd5a76535fa98d1ad817323 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Fri, 10 Aug 2018 12:42:08 +0200 Subject: [PATCH] Parsing of email address from Debian client cert CN fixed --- app/controllers/application_controller.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d982c1b..f626221 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -25,8 +25,14 @@ class ApplicationController < ActionController::Base # Only run if the user is not yet logged in if not user_signed_in? if debian_sso_dn = request.env['HTTP_X_DEBIAN_SSO_DN'] - debian_sso_dn =~ /^CN=(.+),/ - debian_email = $1 + + # Turn + # "/O=Debian SSO client certificate/CN=haas@debian.org" + # into + # haas@debian.org + debian_email = debian_sso_dn.split('/').grep(/^CN/).first.split('=').last + + raise "No valid certificate CN found" unless debian_email.include? '@' @user = User.where(provider: 'debian-sso', email: debian_email).first_or_create do |user| user.provider = 'debian-sso'