From 548aacdb5f76bd2a8fd7810cb8605cd2b24d09f8 Mon Sep 17 00:00:00 2001 From: Sam Bauch Date: Tue, 15 Dec 2020 19:58:28 -0500 Subject: [PATCH 1/5] add omniauth-osso- gem --- Gemfile | 1 + Gemfile.lock | 7 +++++-- vendor/cache/omniauth-oauth2-1.6.0.gem | Bin 0 -> 10240 bytes vendor/cache/omniauth-oauth2-1.7.0.gem | Bin 10752 -> 0 bytes vendor/cache/omniauth-osso-0.1.6.gem | Bin 0 -> 14336 bytes 5 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 vendor/cache/omniauth-oauth2-1.6.0.gem delete mode 100644 vendor/cache/omniauth-oauth2-1.7.0.gem create mode 100644 vendor/cache/omniauth-osso-0.1.6.gem diff --git a/Gemfile b/Gemfile index c3fb0f4befe08..4c0a369e14357 100644 --- a/Gemfile +++ b/Gemfile @@ -64,6 +64,7 @@ gem "omniauth", "~> 1.9" # A generalized Rack framework for multiple-provider au gem "omniauth-facebook", "~> 8.0" # OmniAuth strategy for Facebook gem "omniauth-github", "~> 1.3" # OmniAuth strategy for GitHub gem "omniauth-twitter", "~> 1.4" # OmniAuth strategy for Twitter +gem "omniauth-osso", "~> 0.1.6" # OmniAuth strategy for Osso gem "parallel", "~> 1.20" # Run any kind of code in parallel processes gem "patron", "~> 0.13.3" # HTTP client library based on libcurl, used with Elasticsearch to support http keep-alive connections gem "pg", "~> 1.2" # Pg is the Ruby interface to the PostgreSQL RDBMS diff --git a/Gemfile.lock b/Gemfile.lock index a67159653dfb3..e399a3cfe4335 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -483,9 +483,11 @@ GEM omniauth-oauth (1.1.0) oauth omniauth (~> 1.0) - omniauth-oauth2 (1.7.0) - oauth2 (~> 1.4) + omniauth-oauth2 (1.6.0) + oauth2 (~> 1.1) omniauth (~> 1.9) + omniauth-osso (0.1.6) + omniauth-oauth2 (~> 1.6.0) omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack @@ -894,6 +896,7 @@ DEPENDENCIES omniauth (~> 1.9) omniauth-facebook (~> 8.0) omniauth-github (~> 1.3) + omniauth-osso (~> 0.1.6) omniauth-twitter (~> 1.4) parallel (~> 1.20) patron (~> 0.13.3) diff --git a/vendor/cache/omniauth-oauth2-1.6.0.gem b/vendor/cache/omniauth-oauth2-1.6.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..bc35824d7be622f1aaf57cabe76127d9616f0de3 GIT binary patch literal 10240 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 literal 0 HcmV?d00001 diff --git a/vendor/cache/omniauth-oauth2-1.7.0.gem b/vendor/cache/omniauth-oauth2-1.7.0.gem deleted file mode 100644 index 71f04ae6709ab1e590252b152054f9df5924de91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10752 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 diff --git a/vendor/cache/omniauth-osso-0.1.6.gem b/vendor/cache/omniauth-osso-0.1.6.gem new file mode 100644 index 0000000000000000000000000000000000000000..2e8490a7db1d669ba83308eb909eb952f9ca1590 GIT binary patch literal 14336 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 X3i|KJ#DCWK4+8%|;6DibdlC3w&>)r1 literal 0 HcmV?d00001 From c82b734349820248dd8e8d77c6790a36b86a0cc9 Mon Sep 17 00:00:00 2001 From: Sam Bauch Date: Tue, 15 Dec 2020 23:19:55 -0500 Subject: [PATCH 2/5] bump omniauth-osso and implement as provider --- Gemfile | 2 +- Gemfile.lock | 10 +-- app/controllers/admin/configs_controller.rb | 2 + app/lib/constants/site_config.rb | 10 +++ app/models/site_config.rb | 2 + app/services/authentication/authenticator.rb | 4 +- app/services/authentication/providers/osso.rb | 69 ++++++++++++++++++ config/initializers/devise.rb | 7 ++ .../20201216025223_add_osso_login_fields.rb | 6 ++ db/schema.rb | 4 +- .../authentication/providers/osso_spec.rb | 46 ++++++++++++ vendor/cache/omniauth-oauth2-1.6.0.gem | Bin 10240 -> 0 bytes vendor/cache/omniauth-oauth2-1.7.0.gem | Bin 0 -> 10752 bytes vendor/cache/omniauth-osso-0.1.6.gem | Bin 14336 -> 0 bytes vendor/cache/omniauth-osso-0.1.7.gem | Bin 0 -> 14336 bytes 15 files changed, 153 insertions(+), 9 deletions(-) create mode 100644 app/services/authentication/providers/osso.rb create mode 100644 db/migrate/20201216025223_add_osso_login_fields.rb create mode 100644 spec/services/authentication/providers/osso_spec.rb delete mode 100644 vendor/cache/omniauth-oauth2-1.6.0.gem create mode 100644 vendor/cache/omniauth-oauth2-1.7.0.gem delete mode 100644 vendor/cache/omniauth-osso-0.1.6.gem create mode 100644 vendor/cache/omniauth-osso-0.1.7.gem diff --git a/Gemfile b/Gemfile index 4c0a369e14357..40c7119a7cd1d 100644 --- a/Gemfile +++ b/Gemfile @@ -63,8 +63,8 @@ gem "oj", "~> 3.10" # JSON parser and object serializer gem "omniauth", "~> 1.9" # A generalized Rack framework for multiple-provider authentication gem "omniauth-facebook", "~> 8.0" # OmniAuth strategy for Facebook gem "omniauth-github", "~> 1.3" # OmniAuth strategy for GitHub +gem "omniauth-osso", "~> 0.1.7" # OmniAuth strategy for Osso gem "omniauth-twitter", "~> 1.4" # OmniAuth strategy for Twitter -gem "omniauth-osso", "~> 0.1.6" # OmniAuth strategy for Osso gem "parallel", "~> 1.20" # Run any kind of code in parallel processes gem "patron", "~> 0.13.3" # HTTP client library based on libcurl, used with Elasticsearch to support http keep-alive connections gem "pg", "~> 1.2" # Pg is the Ruby interface to the PostgreSQL RDBMS diff --git a/Gemfile.lock b/Gemfile.lock index e399a3cfe4335..95b2a3e03899f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -483,11 +483,11 @@ GEM omniauth-oauth (1.1.0) oauth omniauth (~> 1.0) - omniauth-oauth2 (1.6.0) - oauth2 (~> 1.1) + omniauth-oauth2 (1.7.0) + oauth2 (~> 1.4) omniauth (~> 1.9) - omniauth-osso (0.1.6) - omniauth-oauth2 (~> 1.6.0) + omniauth-osso (0.1.7) + omniauth-oauth2 (>= 1.6, < 1.8) omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack @@ -896,7 +896,7 @@ DEPENDENCIES omniauth (~> 1.9) omniauth-facebook (~> 8.0) omniauth-github (~> 1.3) - omniauth-osso (~> 0.1.6) + omniauth-osso (~> 0.1.7) omniauth-twitter (~> 1.4) parallel (~> 1.20) patron (~> 0.13.3) diff --git a/app/controllers/admin/configs_controller.rb b/app/controllers/admin/configs_controller.rb index 7de762afc2c8a..3b313d306066e 100644 --- a/app/controllers/admin/configs_controller.rb +++ b/app/controllers/admin/configs_controller.rb @@ -113,6 +113,8 @@ class ConfigsController < Admin::ApplicationController github_secret facebook_key facebook_secret + osso_key + osso_secret auth_providers_to_enable invite_only_mode allow_email_password_registration diff --git a/app/lib/constants/site_config.rb b/app/lib/constants/site_config.rb index b29d12a0b755e..556735a2cac3e 100644 --- a/app/lib/constants/site_config.rb +++ b/app/lib/constants/site_config.rb @@ -241,6 +241,16 @@ module SiteConfig description: "Used as the onboarding task-card image", placeholder: IMAGE_PLACEHOLDER }, + osso_key: { + description: + "The \"Client ID\" for the OAuth client from your Osso instance", + placeholder: "" + }, + osso_secret: { + description: + "The \"Client secret\" for the OAuth client from your Osso instance", + placeholder: "" + }, payment_pointer: { description: "Used for site-wide web monetization. " \ "See: https://github.com/thepracticaldev/dev.to/pull/6345", diff --git a/app/models/site_config.rb b/app/models/site_config.rb index 7d1f44f4c0bdb..394b29a7474a5 100644 --- a/app/models/site_config.rb +++ b/app/models/site_config.rb @@ -36,6 +36,8 @@ class SiteConfig < RailsSettings::Base field :twitter_secret, type: :string, default: ApplicationConfig["TWITTER_SECRET"] field :github_key, type: :string, default: ApplicationConfig["GITHUB_KEY"] field :github_secret, type: :string, default: ApplicationConfig["GITHUB_SECRET"] + field :osso_key, type: :string, default: ApplicationConfig["OSSO_KEY"] + field :osso_secret, type: :string, default: ApplicationConfig["OSSO_SECRET"] field :facebook_key, type: :string field :facebook_secret, type: :string diff --git a/app/services/authentication/authenticator.rb b/app/services/authentication/authenticator.rb index a7449e2a283a3..ab4a2e58d7d89 100644 --- a/app/services/authentication/authenticator.rb +++ b/app/services/authentication/authenticator.rb @@ -155,9 +155,9 @@ def account_less_than_a_week_old?(user, logged_in_identity) def extract_created_at_from_payload(logged_in_identity) raw_info = logged_in_identity.auth_data_dump.extra.raw_info - if raw_info.created_at.present? + if raw_info&.created_at.present? Time.zone.parse(raw_info.created_at) - elsif raw_info.auth_time.present? + elsif raw_info&.auth_time.present? Time.zone.at(raw_info.auth_time) else Time.current diff --git a/app/services/authentication/providers/osso.rb b/app/services/authentication/providers/osso.rb new file mode 100644 index 0000000000000..fa9eff56540ab --- /dev/null +++ b/app/services/authentication/providers/osso.rb @@ -0,0 +1,69 @@ +module Authentication + module Providers + # GitHub authentication provider, uses omniauth-github as backend + class Osso < Provider + OFFICIAL_NAME = "SAML SSO".freeze + SETTINGS_URL = "https://ossapp.com".freeze # TODO + + def new_user_data + name = info.name || info.email.to_s + + { + email: info.email.to_s, + name: name, + osso_username: user_nickname + } + end + + def existing_user_data + { + email: info.email.to_s + } + end + + def user_email + info.email.to_s + end + + # We're overriding this method because Osso doesn't have a concept nickname or username. + # Instead: we'll construct one based on the user's name with some randomization thrown in based + # on uid, which is guaranteed to be present and unique on Facebook. + def user_nickname + [ + info.name.sub(" ", "_"), + Digest::SHA512.hexdigest(payload.uid), + ].join("_")[0...25] + end + + def self.official_name + OFFICIAL_NAME + end + + def self.settings_url + SETTINGS_URL + end + + def self.authentication_path(state: SecureRandom.hex(32), **_kwargs) + ::Authentication::Paths.authentication_path( + provider_name, + state: state, + email: "sam@customer.com", # TODO: this means we can pass email in, rather than use hosted login + ) + end + + # This gets used as the redirect URI, which for osso (and I think OAuth spec?) + # can't have query params like state or code + def self.sign_in_path(**_kwargs) + ::Authentication::Paths.authentication_path( + provider_name, + ) + end + + protected + + def cleanup_payload(auth_payload) + auth_payload + end + end + end +end diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index cec51090d72e9..7a7535bbc151b 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -15,6 +15,12 @@ env["omniauth.strategy"].options[:token_params][:parse] = :json end +OSSO_OMNIAUTH_SETUP = lambda do |env| + env["omniauth.strategy"].options[:client_id] = SiteConfig.osso_key + env["omniauth.strategy"].options[:client_secret] = SiteConfig.osso_secret + env["omniauth.strategy"].options[:client_options].site = ENV["OSSO_BASE_URL"] +end + Devise.setup do |config| # The secret key used by Devise. Devise uses this key to generate # random tokens. Changing this key will render invalid all existing @@ -303,6 +309,7 @@ # Fun fact, unless Twitter is last, it doesn't work for some reason. config.omniauth :facebook, setup: FACEBOOK_OMNIAUTH_SETUP config.omniauth :github, setup: GITHUB_OMNIUATH_SETUP + config.omniauth :osso, setup: OSSO_OMNIAUTH_SETUP config.omniauth :twitter, setup: TWITTER_OMNIAUTH_SETUP # ==> Warden configuration diff --git a/db/migrate/20201216025223_add_osso_login_fields.rb b/db/migrate/20201216025223_add_osso_login_fields.rb new file mode 100644 index 0000000000000..fb6d374d7759a --- /dev/null +++ b/db/migrate/20201216025223_add_osso_login_fields.rb @@ -0,0 +1,6 @@ +class AddOssoLoginFields < ActiveRecord::Migration[6.0] + def change + add_column :users, :osso_username, :string + add_column :users, :osso_created_at, :datetime + end +end diff --git a/db/schema.rb b/db/schema.rb index d1d9340a5326e..9675721b4028d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_12_03_063435) do +ActiveRecord::Schema.define(version: 2020_12_16_025223) do # These are extensions that must be enabled in order to support this database enable_extension "citext" @@ -1305,6 +1305,8 @@ t.string "old_username" t.boolean "onboarding_package_requested", default: false t.datetime "organization_info_updated_at" + t.datetime "osso_created_at" + t.string "osso_username" t.string "payment_pointer" t.boolean "permit_adjacent_sponsors", default: true t.string "profile_image" diff --git a/spec/services/authentication/providers/osso_spec.rb b/spec/services/authentication/providers/osso_spec.rb new file mode 100644 index 0000000000000..8fb8cbf28f67b --- /dev/null +++ b/spec/services/authentication/providers/osso_spec.rb @@ -0,0 +1,46 @@ +require "rails_helper" + +RSpec.describe Authentication::Providers::Osso, type: :service do + describe ".authentication_path" do + it "returns the correct authentication path" do + expected_path = Rails.application.routes.url_helpers.user_osso_omniauth_authorize_path + expect(described_class.authentication_path).to start_with(expected_path) + end + + it "supports state parameter" do + path = described_class.authentication_path(state: "state") + expect(path).to include("state=state") + end + + it "provides default state parameter" do + allow(SecureRandom).to receive(:hex).and_return("secure-state") + path = described_class.authentication_path + expect(path).to include("state=secure-state") + end + + it "overrides the callback_url parameter" do + path = described_class.sign_in_path(callback_url: "https://example.com/callback") + expect(path).not_to include("callback_url") + end + end + + describe ".sign_in_path" do + let(:expected_path) do + "/users/auth/osso" + end + + it "returns the correct sign in path" do + expect(described_class.sign_in_path).to start_with(expected_path) + end + + it "supports state parameter" do + path = described_class.sign_in_path(state: "state") + expect(path).to include("state=state") + end + + it "overrides the callback_url parameter" do + path = described_class.sign_in_path(callback_url: "https://example.com/callback") + expect(path).not_to include("callback_url") + end + end +end diff --git a/vendor/cache/omniauth-oauth2-1.6.0.gem b/vendor/cache/omniauth-oauth2-1.6.0.gem deleted file mode 100644 index bc35824d7be622f1aaf57cabe76127d9616f0de3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 diff --git a/vendor/cache/omniauth-oauth2-1.7.0.gem b/vendor/cache/omniauth-oauth2-1.7.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..71f04ae6709ab1e590252b152054f9df5924de91 GIT binary patch literal 10752 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 literal 0 HcmV?d00001 diff --git a/vendor/cache/omniauth-osso-0.1.6.gem b/vendor/cache/omniauth-osso-0.1.6.gem deleted file mode 100644 index 2e8490a7db1d669ba83308eb909eb952f9ca1590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14336 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 X3i|KJ#DCWK4+8%|;6DibdlC3w&>)r1 diff --git a/vendor/cache/omniauth-osso-0.1.7.gem b/vendor/cache/omniauth-osso-0.1.7.gem new file mode 100644 index 0000000000000000000000000000000000000000..224f864d58d0f5b9c0998c4ec467da8ce88ec42b GIT binary patch literal 14336 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 O_>ThrQQ&`8f&T@EL&+-u literal 0 HcmV?d00001 From 36a639999b399085ce07ddbd921c1f55c95ac046 Mon Sep 17 00:00:00 2001 From: Sam Bauch Date: Tue, 15 Dec 2020 23:25:30 -0500 Subject: [PATCH 3/5] comment --- app/services/authentication/providers/osso.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/services/authentication/providers/osso.rb b/app/services/authentication/providers/osso.rb index fa9eff56540ab..6849887d4529b 100644 --- a/app/services/authentication/providers/osso.rb +++ b/app/services/authentication/providers/osso.rb @@ -1,6 +1,13 @@ module Authentication module Providers - # GitHub authentication provider, uses omniauth-github as backend + # Osso authentication provider, uses omniauth-osso as backend. + # Osso is an open source service for adding SAML based SSO to + # your application. The Osso team added Osso as a provider + # in order to serve as a real-world example of how simple it + # is to integrate Osso. + # + # Learn more about Osso at https://ossoapp.com + class Osso < Provider OFFICIAL_NAME = "SAML SSO".freeze SETTINGS_URL = "https://ossapp.com".freeze # TODO From 76be0edb8620fcd212de64bdecbe312bebf5e8f1 Mon Sep 17 00:00:00 2001 From: Sam Bauch Date: Tue, 15 Dec 2020 23:25:48 -0500 Subject: [PATCH 4/5] typo --- app/services/authentication/providers/osso.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/authentication/providers/osso.rb b/app/services/authentication/providers/osso.rb index 6849887d4529b..983e44a54d70d 100644 --- a/app/services/authentication/providers/osso.rb +++ b/app/services/authentication/providers/osso.rb @@ -10,7 +10,7 @@ module Providers class Osso < Provider OFFICIAL_NAME = "SAML SSO".freeze - SETTINGS_URL = "https://ossapp.com".freeze # TODO + SETTINGS_URL = "https://ossoapp.com".freeze # TODO def new_user_data name = info.name || info.email.to_s From fa5b92504567203bab8c57438fc24a74f89a0b6e Mon Sep 17 00:00:00 2001 From: Sam Bauch Date: Wed, 16 Dec 2020 01:23:30 -0500 Subject: [PATCH 5/5] self review --- Gemfile | 2 +- Gemfile.lock | 4 ++-- app/services/authentication/providers/osso.rb | 13 ++++++++----- vendor/cache/omniauth-osso-0.1.7.gem | Bin 14336 -> 0 bytes 4 files changed, 11 insertions(+), 8 deletions(-) delete mode 100644 vendor/cache/omniauth-osso-0.1.7.gem diff --git a/Gemfile b/Gemfile index 40c7119a7cd1d..c6fa7a40ff334 100644 --- a/Gemfile +++ b/Gemfile @@ -63,7 +63,7 @@ gem "oj", "~> 3.10" # JSON parser and object serializer gem "omniauth", "~> 1.9" # A generalized Rack framework for multiple-provider authentication gem "omniauth-facebook", "~> 8.0" # OmniAuth strategy for Facebook gem "omniauth-github", "~> 1.3" # OmniAuth strategy for GitHub -gem "omniauth-osso", "~> 0.1.7" # OmniAuth strategy for Osso +gem "omniauth-osso", "0.1.8.pre" # OmniAuth strategy for Osso gem "omniauth-twitter", "~> 1.4" # OmniAuth strategy for Twitter gem "parallel", "~> 1.20" # Run any kind of code in parallel processes gem "patron", "~> 0.13.3" # HTTP client library based on libcurl, used with Elasticsearch to support http keep-alive connections diff --git a/Gemfile.lock b/Gemfile.lock index 95b2a3e03899f..064e80d1a73db 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -486,7 +486,7 @@ GEM omniauth-oauth2 (1.7.0) oauth2 (~> 1.4) omniauth (~> 1.9) - omniauth-osso (0.1.7) + omniauth-osso (0.1.8.pre) omniauth-oauth2 (>= 1.6, < 1.8) omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) @@ -896,7 +896,7 @@ DEPENDENCIES omniauth (~> 1.9) omniauth-facebook (~> 8.0) omniauth-github (~> 1.3) - omniauth-osso (~> 0.1.7) + omniauth-osso (= 0.1.8.pre) omniauth-twitter (~> 1.4) parallel (~> 1.20) patron (~> 0.13.3) diff --git a/app/services/authentication/providers/osso.rb b/app/services/authentication/providers/osso.rb index 983e44a54d70d..b03e30b75b33a 100644 --- a/app/services/authentication/providers/osso.rb +++ b/app/services/authentication/providers/osso.rb @@ -50,19 +50,22 @@ def self.settings_url SETTINGS_URL end - def self.authentication_path(state: SecureRandom.hex(32), **_kwargs) + # We're overriding these methods to add a little security with a random + # string for state + def self.authentication_path(state: SecureRandom.hex(32), **kwargs) ::Authentication::Paths.authentication_path( provider_name, state: state, - email: "sam@customer.com", # TODO: this means we can pass email in, rather than use hosted login + **kwargs, ) end - # This gets used as the redirect URI, which for osso (and I think OAuth spec?) - # can't have query params like state or code - def self.sign_in_path(**_kwargs) + # TODO: this suggests we can pass email in, rather than use hosted login + def self.sign_in_path(state: SecureRandom.hex(32), **_kwargs) ::Authentication::Paths.authentication_path( provider_name, + email: "sam@customer.com", + state: state, ) end diff --git a/vendor/cache/omniauth-osso-0.1.7.gem b/vendor/cache/omniauth-osso-0.1.7.gem deleted file mode 100644 index 224f864d58d0f5b9c0998c4ec467da8ce88ec42b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14336 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 O_>ThrQQ&`8f&T@EL&+-u