add_auth 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -0
- data/README.md +64 -17
- data/ROADMAP.md +98 -43
- data/SECURITY.md +8 -0
- data/app/controllers/add_auth/accounts_controller.rb +146 -0
- data/app/controllers/add_auth/assets_controller.rb +2 -1
- data/app/controllers/add_auth/external_identities_controller.rb +56 -0
- data/app/controllers/add_auth/mobile_sessions_controller.rb +120 -0
- data/app/controllers/add_auth/provider_sign_ins_controller.rb +248 -0
- data/app/controllers/add_auth/reauthentications_controller.rb +5 -0
- data/app/helpers/add_auth/sign_ins_helper.rb +2 -1
- data/app/jobs/add_auth/account_delivery_job.rb +14 -0
- data/app/jobs/add_auth/account_request_job.rb +17 -0
- data/app/mailers/add_auth/account_mailer.rb +12 -0
- data/app/views/add_auth/account_mailer/link.text.erb +7 -0
- data/app/views/add_auth/accounts/_check_email.html.erb +5 -0
- data/app/views/add_auth/accounts/_delete.html.erb +6 -0
- data/app/views/add_auth/accounts/_email.html.erb +12 -0
- data/app/views/add_auth/accounts/_invalid_proof.html.erb +5 -0
- data/app/views/add_auth/accounts/_password.html.erb +12 -0
- data/app/views/add_auth/accounts/_proof.html.erb +16 -0
- data/app/views/add_auth/accounts/_register.html.erb +17 -0
- data/app/views/add_auth/accounts/_request.html.erb +17 -0
- data/app/views/add_auth/accounts/_unavailable.html.erb +3 -0
- data/app/views/add_auth/external_identities/_index.html.erb +22 -0
- data/app/views/add_auth/external_identities/_unavailable.html.erb +3 -0
- data/app/views/add_auth/passkeys/_controls.html.erb +3 -1
- data/app/views/add_auth/provider_sign_ins/_enrollment.html.erb +12 -0
- data/app/views/add_auth/provider_sign_ins/_failure.html.erb +3 -0
- data/app/views/add_auth/provider_sign_ins/_prepare.html.erb +7 -0
- data/app/views/add_auth/reauthentications/_form.html.erb +9 -0
- data/app/views/add_auth/sessions/_list.html.erb +1 -1
- data/app/views/add_auth/sessions/index.html.erb +7 -0
- data/app/views/add_auth/sign_ins/_confirmation.html.erb +1 -0
- data/app/views/add_auth/sign_ins/_form.html.erb +17 -0
- data/app/views/add_auth/sign_ins/_remember.html.erb +6 -0
- data/app/views/layouts/add_auth/authentication.html.erb +4 -3
- data/exe/add_auth-preflight +26 -0
- data/lib/add_auth/configuration.rb +78 -4
- data/lib/add_auth/core/access_policy.rb +11 -1
- data/lib/add_auth/core/account_lifecycle.rb +295 -0
- data/lib/add_auth/core/account_policy.rb +68 -0
- data/lib/add_auth/core/external_identities/evidence.rb +98 -0
- data/lib/add_auth/core/external_identities.rb +278 -0
- data/lib/add_auth/core/intake.rb +6 -1
- data/lib/add_auth/core/maintenance.rb +5 -3
- data/lib/add_auth/core/migration/account_adoption.rb +79 -0
- data/lib/add_auth/core/migration/readiness.rb +41 -0
- data/lib/add_auth/core/mobile_authentication.rb +35 -0
- data/lib/add_auth/core/mobile_handoffs.rb +83 -0
- data/lib/add_auth/core/mobile_profile.rb +46 -0
- data/lib/add_auth/core/mobile_response.rb +12 -0
- data/lib/add_auth/core/native_authentication.rb +77 -0
- data/lib/add_auth/core/passwords/bcrypt_support.rb +28 -0
- data/lib/add_auth/core/passwords/credential.rb +49 -0
- data/lib/add_auth/core/passwords/legacy_bcrypt.rb +43 -0
- data/lib/add_auth/core/passwords/lifecycle.rb +60 -0
- data/lib/add_auth/core/remaining_factors.rb +24 -0
- data/lib/add_auth/core/sessions.rb +102 -17
- data/lib/add_auth/core/step_up.rb +13 -1
- data/lib/add_auth/migration/static_inventory.rb +116 -0
- data/lib/add_auth/rails/account_password_entry.rb +24 -0
- data/lib/add_auth/rails/authentication.rb +1 -1
- data/lib/add_auth/rails/authentication_pages.rb +6 -1
- data/lib/add_auth/rails/doctor.rb +80 -6
- data/lib/add_auth/rails/ejection.rb +1 -1
- data/lib/add_auth/rails/engine.rb +6 -1
- data/lib/add_auth/rails/migration/account_store.rb +41 -0
- data/lib/add_auth/rails/migration/effective_inventory.rb +162 -0
- data/lib/add_auth/rails/migration/key_type.rb +23 -0
- data/lib/add_auth/rails/migration/source_bridge.rb +53 -0
- data/lib/add_auth/rails/password_adoption.rb +37 -0
- data/lib/add_auth/rails/provider_enrollment.rb +61 -0
- data/lib/add_auth/rails/provider_libraries/apple_form_post_correlation.rb +127 -0
- data/lib/add_auth/rails/provider_libraries/apple_jwks.rb +68 -0
- data/lib/add_auth/rails/provider_libraries/apple_native.rb +55 -0
- data/lib/add_auth/rails/provider_libraries/callback_route.rb +16 -0
- data/lib/add_auth/rails/provider_libraries/omniauth.rb +136 -0
- data/lib/add_auth/rails/provider_libraries/omniauth_correlation.rb +107 -0
- data/lib/add_auth/rails/provider_libraries/openid_connect.rb +62 -0
- data/lib/add_auth/rails/provider_libraries/request_protection.rb +43 -0
- data/lib/add_auth/rails/runtime.rb +179 -8
- data/lib/add_auth/rails/stores/account_credentials.rb +44 -0
- data/lib/add_auth/rails/stores/account_lock.rb +16 -7
- data/lib/add_auth/rails/stores/account_tokens.rb +104 -0
- data/lib/add_auth/rails/stores/authority.rb +28 -0
- data/lib/add_auth/rails/stores/commit_dispatch.rb +32 -0
- data/lib/add_auth/rails/stores/external_identities.rb +91 -0
- data/lib/add_auth/rails/stores/maintenance.rb +1 -1
- data/lib/add_auth/rails/stores/mobile_handoffs.rb +53 -0
- data/lib/add_auth/rails/stores/security_events.rb +3 -6
- data/lib/add_auth/rails/user_lifecycle.rb +8 -10
- data/lib/add_auth/result.rb +1 -0
- data/lib/add_auth/version.rb +1 -1
- data/lib/add_auth.rb +4 -0
- data/lib/generators/add_auth/accounts/accounts_generator.rb +56 -0
- data/lib/generators/add_auth/accounts/templates/add_add_auth_accounts.rb.tt +49 -0
- data/lib/generators/add_auth/accounts/templates/add_add_auth_provisioning.rb.tt +9 -0
- data/lib/generators/add_auth/accounts/templates/add_auth_account_token.rb +6 -0
- data/lib/generators/add_auth/accounts/templates/add_auth_address_claim.rb +6 -0
- data/lib/generators/add_auth/devise_accounts/devise_accounts_generator.rb +23 -0
- data/lib/generators/add_auth/devise_accounts/templates/prepare_add_auth_devise_accounts.rb.tt +17 -0
- data/lib/generators/add_auth/email_link/email_link_generator.rb +4 -1
- data/lib/generators/add_auth/email_link/templates/add_auth_challenge.js +1 -0
- data/lib/generators/add_auth/email_tokens/templates/create_add_auth_sign_in_tokens.rb.tt +3 -1
- data/lib/generators/add_auth/external_identities/external_identities_generator.rb +52 -0
- data/lib/generators/add_auth/external_identities/templates/add_add_auth_external_enrollment.rb.tt +5 -0
- data/lib/generators/add_auth/external_identities/templates/add_add_auth_external_identity_validity.rb.tt +5 -0
- data/lib/generators/add_auth/external_identities/templates/add_auth_external_identity.rb +4 -0
- data/lib/generators/add_auth/external_identities/templates/add_auth_external_transaction.rb +6 -0
- data/lib/generators/add_auth/external_identities/templates/create_add_auth_external_identities.rb.tt +50 -0
- data/lib/generators/add_auth/external_identities/templates/providers.rb +51 -0
- data/lib/generators/add_auth/feature_configuration.rb +21 -0
- data/lib/generators/add_auth/install/templates/initializer.rb +154 -46
- data/lib/generators/add_auth/javascript/templates/passkey.js +8 -5
- data/lib/generators/add_auth/mobile_sessions/mobile_sessions_generator.rb +48 -0
- data/lib/generators/add_auth/mobile_sessions/templates/add_add_auth_mobile_sessions.rb.tt +9 -0
- data/lib/generators/add_auth/mobile_sessions/templates/add_auth_mobile_handoff.rb +5 -0
- data/lib/generators/add_auth/mobile_sessions/templates/create_add_auth_mobile_handoffs.rb.tt +27 -0
- data/lib/generators/add_auth/mobile_sessions/templates/mobile.rb +8 -0
- data/lib/generators/add_auth/notifications/notifications_generator.rb +3 -4
- data/lib/generators/add_auth/notifications/templates/create_add_auth_security_events.rb.tt +3 -1
- data/lib/generators/add_auth/passkeys/passkeys_generator.rb +3 -21
- data/lib/generators/add_auth/passkeys/templates/add_add_auth_passkeys.rb.tt +7 -3
- data/lib/generators/add_auth/session_upgrade/session_upgrade_generator.rb +3 -1
- data/lib/generators/add_auth/step_up/step_up_generator.rb +5 -5
- data/lib/generators/add_auth/step_up/templates/add_add_auth_reauthentication.rb.tt +3 -1
- data/lib/tasks/add_auth.rake +18 -1
- metadata +101 -2
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "rails/generators"
|
|
4
|
+
require "generators/add_auth/feature_configuration"
|
|
4
5
|
require "rails/generators/active_record"
|
|
5
6
|
|
|
6
7
|
module AddAuth
|
|
7
8
|
module Generators
|
|
8
9
|
class PasskeysGenerator < ::Rails::Generators::Base
|
|
9
10
|
include ::Rails::Generators::Migration
|
|
11
|
+
include FeatureConfiguration
|
|
10
12
|
|
|
11
13
|
source_root File.expand_path("templates", __dir__)
|
|
12
14
|
def self.next_migration_number(dirname) = ::ActiveRecord::Generators::Base.next_migration_number(dirname)
|
|
@@ -47,27 +49,7 @@ module AddAuth
|
|
|
47
49
|
post "recover/link", to: "add_auth/recoveries#confirm"
|
|
48
50
|
ROUTES
|
|
49
51
|
end
|
|
50
|
-
|
|
51
|
-
unless File.read(File.join(destination_root, path)).include?("config.passkeys.enabled = true")
|
|
52
|
-
append_to_file path, <<~CONFIG
|
|
53
|
-
|
|
54
|
-
AddAuth.configure do |config|
|
|
55
|
-
config.passkeys.enabled = true
|
|
56
|
-
# REQUIRED: stable RP ID and exact deployment origins, never request Host.
|
|
57
|
-
# config.passkeys.rp_id = "example.com"
|
|
58
|
-
# config.passkeys.origins = ["https://app.example.com"]
|
|
59
|
-
# config.passkeys.name = "Your app"
|
|
60
|
-
# Shared anonymous ceremony budget per five minutes; positive integer.
|
|
61
|
-
# config.passkeys.anonymous_limit = 1000
|
|
62
|
-
# Schedule add_auth:deliver_pending every minute. Production doctor
|
|
63
|
-
# requires a completed cleanup within the last two minutes.
|
|
64
|
-
# REQUIRED for email replacement: a host-verified recovery address.
|
|
65
|
-
# config.trusted_recovery_address = ->(user) { user.email_address if user.confirmed? }
|
|
66
|
-
# REQUIRED before strict activation: your documented support route.
|
|
67
|
-
# config.support_url = "/support"
|
|
68
|
-
end
|
|
69
|
-
CONFIG
|
|
70
|
-
end
|
|
52
|
+
enable_feature(:passkeys)
|
|
71
53
|
say "Review and migrate before enabling traffic. Configure RP/origins, trusted recovery and notifications; run add_auth:doctor."
|
|
72
54
|
end
|
|
73
55
|
end
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
require "add_auth/rails/migration/key_type"
|
|
2
|
+
|
|
1
3
|
class AddAddAuthPasskeys < ActiveRecord::Migration[8.0]
|
|
2
4
|
def change
|
|
5
|
+
user_key_type = AddAuth::Rails::Migration::KeyType.for(connection, :users)
|
|
6
|
+
session_key_type = AddAuth::Rails::Migration::KeyType.for(connection, :sessions, session: true)
|
|
3
7
|
# Rails 8.0 cannot reflect SQLite's FALSE literal emitted by Rails 8.1.
|
|
4
8
|
# Keep the additive schema readable by both supported Rails lines.
|
|
5
9
|
false_default = (connection.adapter_name == "SQLite") ? -> { "0" } : false
|
|
@@ -11,7 +15,7 @@ class AddAddAuthPasskeys < ActiveRecord::Migration[8.0]
|
|
|
11
15
|
add_column :sessions, :authentication_credential_id, :string
|
|
12
16
|
add_column :sessions, :authentication_uv, :boolean, default: false_default, null: false
|
|
13
17
|
create_table :add_auth_credentials do |t|
|
|
14
|
-
t.references :user, null: false, foreign_key: {on_delete: :cascade}
|
|
18
|
+
t.references :user, type: user_key_type, null: false, foreign_key: {on_delete: :cascade}
|
|
15
19
|
t.string :external_id, null: false
|
|
16
20
|
t.text :public_key, null: false
|
|
17
21
|
t.bigint :sign_count, default: 0, null: false
|
|
@@ -31,8 +35,8 @@ class AddAddAuthPasskeys < ActiveRecord::Migration[8.0]
|
|
|
31
35
|
t.string :kind, null: false
|
|
32
36
|
t.string :browser_digest, null: false
|
|
33
37
|
t.string :configuration_digest, null: false
|
|
34
|
-
t.references :user, foreign_key: {on_delete: :cascade}
|
|
35
|
-
t.references :session, foreign_key: {on_delete: :cascade}
|
|
38
|
+
t.references :user, type: user_key_type, foreign_key: {on_delete: :cascade}
|
|
39
|
+
t.references :session, type: session_key_type, foreign_key: {on_delete: :cascade}
|
|
36
40
|
t.string :session_digest
|
|
37
41
|
t.string :authentication_purpose
|
|
38
42
|
t.datetime :expires_at, null: false
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "rails/generators"
|
|
4
|
+
require "generators/add_auth/feature_configuration"
|
|
4
5
|
require "rails/generators/active_record"
|
|
5
6
|
|
|
6
7
|
module AddAuth
|
|
7
8
|
module Generators
|
|
8
9
|
class SessionUpgradeGenerator < ::Rails::Generators::Base
|
|
9
10
|
include ::Rails::Generators::Migration
|
|
11
|
+
include FeatureConfiguration
|
|
10
12
|
|
|
11
13
|
source_root File.expand_path("templates", __dir__)
|
|
12
14
|
|
|
@@ -62,7 +64,7 @@ module AddAuth
|
|
|
62
64
|
unless File.read(File.join(destination_root, path)).include?('require "add_auth/rails/authentication"')
|
|
63
65
|
prepend_to_file path, %(require "add_auth/rails/authentication"\nrequire "add_auth/rails/user_lifecycle"\n)
|
|
64
66
|
end
|
|
65
|
-
|
|
67
|
+
enable_feature(:session)
|
|
66
68
|
routes = File.join(destination_root, "config/routes.rb")
|
|
67
69
|
source = File.read(routes)
|
|
68
70
|
unless source.include?("# AddAuth session management")
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "rails/generators"
|
|
4
|
+
require "generators/add_auth/feature_configuration"
|
|
4
5
|
require "rails/generators/active_record"
|
|
5
6
|
|
|
6
7
|
module AddAuth
|
|
7
8
|
module Generators
|
|
8
9
|
class StepUpGenerator < ::Rails::Generators::Base
|
|
9
10
|
include ::Rails::Generators::Migration
|
|
11
|
+
include FeatureConfiguration
|
|
10
12
|
|
|
11
13
|
source_root File.expand_path("templates", __dir__)
|
|
14
|
+
class_option :email_link, type: :boolean, default: true, desc: "Enable email sign-in alongside reauthentication"
|
|
12
15
|
def self.next_migration_number(dirname) = ::ActiveRecord::Generators::Base.next_migration_number(dirname)
|
|
13
16
|
|
|
14
17
|
def dependencies
|
|
15
|
-
invoke "add_auth:email_link"
|
|
18
|
+
invoke "add_auth:email_link", [], enable: options[:email_link]
|
|
16
19
|
end
|
|
17
20
|
|
|
18
21
|
def persistence
|
|
@@ -33,10 +36,7 @@ module AddAuth
|
|
|
33
36
|
post "reauthenticate/link", to: "add_auth/reauthentications#confirm"
|
|
34
37
|
ROUTES
|
|
35
38
|
end
|
|
36
|
-
|
|
37
|
-
unless File.read(File.join(destination_root, initializer)).include?("config.step_up.enabled = true")
|
|
38
|
-
append_to_file initializer, "\nAddAuth.configure do |config|\n config.step_up.enabled = true\n # Declare purpose methods and a fixed safe GET return_to before use.\nend\n"
|
|
39
|
-
end
|
|
39
|
+
enable_feature(:step_up)
|
|
40
40
|
say "Migrate and declare config.step_up.purposes. Use with_elevated_session around sensitive database mutations."
|
|
41
41
|
end
|
|
42
42
|
end
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
require "add_auth/rails/migration/key_type"
|
|
2
|
+
|
|
1
3
|
class AddAddAuthReauthentication < ActiveRecord::Migration[8.0]
|
|
2
4
|
def change
|
|
3
5
|
add_column :sessions, :elevation_version, :string
|
|
4
6
|
add_column :sessions, :elevation_expires_at, :datetime
|
|
5
|
-
add_reference :add_auth_sign_in_tokens, :session, foreign_key: {on_delete: :cascade}
|
|
7
|
+
add_reference :add_auth_sign_in_tokens, :session, type: AddAuth::Rails::Migration::KeyType.for(connection, :sessions, session: true), foreign_key: {on_delete: :cascade}
|
|
6
8
|
add_column :add_auth_sign_in_tokens, :session_digest, :string
|
|
7
9
|
add_column :add_auth_sign_in_tokens, :authentication_purpose, :string
|
|
8
10
|
end
|
data/lib/tasks/add_auth.rake
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
namespace :add_auth do
|
|
4
|
+
desc "Read-only Devise inventory in an isolated local test/development host"
|
|
5
|
+
task devise_preflight: :environment do
|
|
6
|
+
require "json"
|
|
7
|
+
require "add_auth/rails/migration/effective_inventory"
|
|
8
|
+
begin
|
|
9
|
+
report = AddAuth::Rails::Migration::EffectiveInventory.new.call
|
|
10
|
+
puts JSON.pretty_generate(report)
|
|
11
|
+
abort "Inventory is incomplete; resolve the reported bounds before migration." unless report.dig(:facts, :complete)
|
|
12
|
+
rescue
|
|
13
|
+
# Host exception text may contain query values or secret configuration.
|
|
14
|
+
abort "Effective inventory failed. Use an isolated local Devise host with one SQLite/PostgreSQL pool and no surrounding transaction."
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
4
18
|
desc "Check installed AddAuth authentication, delivery and maintenance wiring"
|
|
5
19
|
task doctor: :environment do
|
|
6
20
|
require "add_auth/rails/doctor"
|
|
@@ -19,13 +33,16 @@ namespace :add_auth do
|
|
|
19
33
|
require "add_auth/rails/stores/maintenance"
|
|
20
34
|
models = {}
|
|
21
35
|
models[:session] = ::Session if AddAuth.configuration.session.enabled && defined?(::Session)
|
|
36
|
+
models[:external_transaction] = ::AddAuthExternalTransaction if defined?(::AddAuthExternalTransaction)
|
|
37
|
+
models[:mobile_handoff] = ::AddAuthMobileHandoff if defined?(::AddAuthMobileHandoff)
|
|
22
38
|
models[:ceremony] = ::AddAuthCeremony if defined?(::AddAuthCeremony)
|
|
23
39
|
models[:email] = ::AddAuthSignInToken if defined?(::AddAuthSignInToken)
|
|
24
40
|
models[:notification] = ::AddAuthSecurityEvent if defined?(::AddAuthSecurityEvent)
|
|
41
|
+
models[:account] = ::AddAuthAccountToken if defined?(::AddAuthAccountToken)
|
|
25
42
|
stores = models.filter_map do |kind, model|
|
|
26
43
|
[kind, AddAuth::Rails::Stores::Maintenance.new(model: model, kind: kind)] if model.table_exists?
|
|
27
44
|
end.to_h
|
|
28
|
-
jobs = {email: AddAuth::EmailDeliveryJob, notification: AddAuth::SecurityNotificationJob}
|
|
45
|
+
jobs = {email: AddAuth::EmailDeliveryJob, notification: AddAuth::SecurityNotificationJob, account: AddAuth::AccountDeliveryJob}
|
|
29
46
|
enqueue = lambda do |kind, id|
|
|
30
47
|
raise AddAuth::Error, "maintenance enqueue failed" unless jobs.fetch(kind).perform_later(id)
|
|
31
48
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: add_auth
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Taimoor Qureshi
|
|
@@ -23,6 +23,20 @@ dependencies:
|
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '8.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: json
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '3.0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "<"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '3.0'
|
|
26
40
|
- !ruby/object:Gem::Dependency
|
|
27
41
|
name: webauthn
|
|
28
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -203,10 +217,13 @@ description: |
|
|
|
203
217
|
reauthentication and recovery. It adds hardened sessions, security mail and
|
|
204
218
|
challenge providers, with shared Turbo/HTML pages and permitted no-JavaScript
|
|
205
219
|
alternatives. It upgrades the generated User and Session models in place.
|
|
220
|
+
Optional account lifecycle, Devise migration, provider-library integration
|
|
221
|
+
and finite native sessions share the same account and session policies.
|
|
206
222
|
Documentation: https://addauthgem.com.
|
|
207
223
|
email:
|
|
208
224
|
- taimoorq@gmail.com
|
|
209
|
-
executables:
|
|
225
|
+
executables:
|
|
226
|
+
- add_auth-preflight
|
|
210
227
|
extensions: []
|
|
211
228
|
extra_rdoc_files: []
|
|
212
229
|
files:
|
|
@@ -216,24 +233,46 @@ files:
|
|
|
216
233
|
- README.md
|
|
217
234
|
- ROADMAP.md
|
|
218
235
|
- SECURITY.md
|
|
236
|
+
- app/controllers/add_auth/accounts_controller.rb
|
|
219
237
|
- app/controllers/add_auth/assets_controller.rb
|
|
238
|
+
- app/controllers/add_auth/external_identities_controller.rb
|
|
239
|
+
- app/controllers/add_auth/mobile_sessions_controller.rb
|
|
220
240
|
- app/controllers/add_auth/passkeys_controller.rb
|
|
241
|
+
- app/controllers/add_auth/provider_sign_ins_controller.rb
|
|
221
242
|
- app/controllers/add_auth/reauthentications_controller.rb
|
|
222
243
|
- app/controllers/add_auth/recoveries_controller.rb
|
|
223
244
|
- app/controllers/add_auth/sessions_controller.rb
|
|
224
245
|
- app/controllers/add_auth/sign_ins_controller.rb
|
|
225
246
|
- app/helpers/add_auth/sign_ins_helper.rb
|
|
226
247
|
- app/javascript/controllers/.keep
|
|
248
|
+
- app/jobs/add_auth/account_delivery_job.rb
|
|
249
|
+
- app/jobs/add_auth/account_request_job.rb
|
|
227
250
|
- app/jobs/add_auth/delivery_job.rb
|
|
228
251
|
- app/jobs/add_auth/email_delivery_job.rb
|
|
229
252
|
- app/jobs/add_auth/email_request_job.rb
|
|
230
253
|
- app/jobs/add_auth/security_notification_job.rb
|
|
254
|
+
- app/mailers/add_auth/account_mailer.rb
|
|
231
255
|
- app/mailers/add_auth/security_mailer.rb
|
|
232
256
|
- app/mailers/add_auth/sign_in_mailer.rb
|
|
233
257
|
- app/models/concerns/.keep
|
|
234
258
|
- app/views/.keep
|
|
259
|
+
- app/views/add_auth/account_mailer/link.text.erb
|
|
260
|
+
- app/views/add_auth/accounts/_check_email.html.erb
|
|
261
|
+
- app/views/add_auth/accounts/_delete.html.erb
|
|
262
|
+
- app/views/add_auth/accounts/_email.html.erb
|
|
263
|
+
- app/views/add_auth/accounts/_invalid_proof.html.erb
|
|
264
|
+
- app/views/add_auth/accounts/_password.html.erb
|
|
265
|
+
- app/views/add_auth/accounts/_proof.html.erb
|
|
266
|
+
- app/views/add_auth/accounts/_register.html.erb
|
|
267
|
+
- app/views/add_auth/accounts/_request.html.erb
|
|
268
|
+
- app/views/add_auth/accounts/_unavailable.html.erb
|
|
269
|
+
- app/views/add_auth/external_identities/_index.html.erb
|
|
270
|
+
- app/views/add_auth/external_identities/_unavailable.html.erb
|
|
235
271
|
- app/views/add_auth/passkeys/_controls.html.erb
|
|
236
272
|
- app/views/add_auth/passkeys/_list.html.erb
|
|
273
|
+
- app/views/add_auth/provider_sign_ins/_enrollment.html.erb
|
|
274
|
+
- app/views/add_auth/provider_sign_ins/_failure.html.erb
|
|
275
|
+
- app/views/add_auth/provider_sign_ins/_prepare.html.erb
|
|
237
276
|
- app/views/add_auth/reauthentications/_check_email.html.erb
|
|
238
277
|
- app/views/add_auth/reauthentications/_confirmation.html.erb
|
|
239
278
|
- app/views/add_auth/reauthentications/_different_browser.html.erb
|
|
@@ -253,11 +292,15 @@ files:
|
|
|
253
292
|
- app/views/add_auth/sign_ins/_different_browser.html.erb
|
|
254
293
|
- app/views/add_auth/sign_ins/_form.html.erb
|
|
255
294
|
- app/views/add_auth/sign_ins/_invalid_link.html.erb
|
|
295
|
+
- app/views/add_auth/sign_ins/_remember.html.erb
|
|
256
296
|
- app/views/add_auth/sign_ins/show.html.erb
|
|
257
297
|
- app/views/layouts/add_auth/authentication.html.erb
|
|
298
|
+
- exe/add_auth-preflight
|
|
258
299
|
- lib/add_auth.rb
|
|
259
300
|
- lib/add_auth/configuration.rb
|
|
260
301
|
- lib/add_auth/core/access_policy.rb
|
|
302
|
+
- lib/add_auth/core/account_lifecycle.rb
|
|
303
|
+
- lib/add_auth/core/account_policy.rb
|
|
261
304
|
- lib/add_auth/core/browser_binding.rb
|
|
262
305
|
- lib/add_auth/core/challenge/base.rb
|
|
263
306
|
- lib/add_auth/core/challenge/http.rb
|
|
@@ -268,14 +311,30 @@ files:
|
|
|
268
311
|
- lib/add_auth/core/delivery.rb
|
|
269
312
|
- lib/add_auth/core/digest/base.rb
|
|
270
313
|
- lib/add_auth/core/digest/hmac.rb
|
|
314
|
+
- lib/add_auth/core/external_identities.rb
|
|
315
|
+
- lib/add_auth/core/external_identities/evidence.rb
|
|
271
316
|
- lib/add_auth/core/intake.rb
|
|
272
317
|
- lib/add_auth/core/maintenance.rb
|
|
318
|
+
- lib/add_auth/core/migration/account_adoption.rb
|
|
319
|
+
- lib/add_auth/core/migration/readiness.rb
|
|
320
|
+
- lib/add_auth/core/mobile_authentication.rb
|
|
321
|
+
- lib/add_auth/core/mobile_handoffs.rb
|
|
322
|
+
- lib/add_auth/core/mobile_profile.rb
|
|
323
|
+
- lib/add_auth/core/mobile_response.rb
|
|
324
|
+
- lib/add_auth/core/native_authentication.rb
|
|
325
|
+
- lib/add_auth/core/passwords/bcrypt_support.rb
|
|
326
|
+
- lib/add_auth/core/passwords/credential.rb
|
|
327
|
+
- lib/add_auth/core/passwords/legacy_bcrypt.rb
|
|
328
|
+
- lib/add_auth/core/passwords/lifecycle.rb
|
|
273
329
|
- lib/add_auth/core/rate_limit.rb
|
|
330
|
+
- lib/add_auth/core/remaining_factors.rb
|
|
274
331
|
- lib/add_auth/core/security_events.rb
|
|
275
332
|
- lib/add_auth/core/sessions.rb
|
|
276
333
|
- lib/add_auth/core/step_up.rb
|
|
277
334
|
- lib/add_auth/core/strategies/email_link.rb
|
|
278
335
|
- lib/add_auth/core/strategies/passkey.rb
|
|
336
|
+
- lib/add_auth/migration/static_inventory.rb
|
|
337
|
+
- lib/add_auth/rails/account_password_entry.rb
|
|
279
338
|
- lib/add_auth/rails/authentication.rb
|
|
280
339
|
- lib/add_auth/rails/authentication_pages.rb
|
|
281
340
|
- lib/add_auth/rails/delivery_cipher.rb
|
|
@@ -283,13 +342,33 @@ files:
|
|
|
283
342
|
- lib/add_auth/rails/ejection.rb
|
|
284
343
|
- lib/add_auth/rails/elevation.rb
|
|
285
344
|
- lib/add_auth/rails/engine.rb
|
|
345
|
+
- lib/add_auth/rails/migration/account_store.rb
|
|
346
|
+
- lib/add_auth/rails/migration/effective_inventory.rb
|
|
347
|
+
- lib/add_auth/rails/migration/key_type.rb
|
|
348
|
+
- lib/add_auth/rails/migration/source_bridge.rb
|
|
349
|
+
- lib/add_auth/rails/password_adoption.rb
|
|
286
350
|
- lib/add_auth/rails/password_entry.rb
|
|
351
|
+
- lib/add_auth/rails/provider_enrollment.rb
|
|
352
|
+
- lib/add_auth/rails/provider_libraries/apple_form_post_correlation.rb
|
|
353
|
+
- lib/add_auth/rails/provider_libraries/apple_jwks.rb
|
|
354
|
+
- lib/add_auth/rails/provider_libraries/apple_native.rb
|
|
355
|
+
- lib/add_auth/rails/provider_libraries/callback_route.rb
|
|
356
|
+
- lib/add_auth/rails/provider_libraries/omniauth.rb
|
|
357
|
+
- lib/add_auth/rails/provider_libraries/omniauth_correlation.rb
|
|
358
|
+
- lib/add_auth/rails/provider_libraries/openid_connect.rb
|
|
359
|
+
- lib/add_auth/rails/provider_libraries/request_protection.rb
|
|
287
360
|
- lib/add_auth/rails/rate_limit_cache.rb
|
|
288
361
|
- lib/add_auth/rails/runtime.rb
|
|
362
|
+
- lib/add_auth/rails/stores/account_credentials.rb
|
|
289
363
|
- lib/add_auth/rails/stores/account_lock.rb
|
|
364
|
+
- lib/add_auth/rails/stores/account_tokens.rb
|
|
365
|
+
- lib/add_auth/rails/stores/authority.rb
|
|
366
|
+
- lib/add_auth/rails/stores/commit_dispatch.rb
|
|
290
367
|
- lib/add_auth/rails/stores/delivery_state.rb
|
|
291
368
|
- lib/add_auth/rails/stores/email_tokens.rb
|
|
369
|
+
- lib/add_auth/rails/stores/external_identities.rb
|
|
292
370
|
- lib/add_auth/rails/stores/maintenance.rb
|
|
371
|
+
- lib/add_auth/rails/stores/mobile_handoffs.rb
|
|
293
372
|
- lib/add_auth/rails/stores/passkeys.rb
|
|
294
373
|
- lib/add_auth/rails/stores/security_events.rb
|
|
295
374
|
- lib/add_auth/rails/stores/sessions.rb
|
|
@@ -297,10 +376,17 @@ files:
|
|
|
297
376
|
- lib/add_auth/result.rb
|
|
298
377
|
- lib/add_auth/testing.rb
|
|
299
378
|
- lib/add_auth/version.rb
|
|
379
|
+
- lib/generators/add_auth/accounts/accounts_generator.rb
|
|
380
|
+
- lib/generators/add_auth/accounts/templates/add_add_auth_accounts.rb.tt
|
|
381
|
+
- lib/generators/add_auth/accounts/templates/add_add_auth_provisioning.rb.tt
|
|
382
|
+
- lib/generators/add_auth/accounts/templates/add_auth_account_token.rb
|
|
383
|
+
- lib/generators/add_auth/accounts/templates/add_auth_address_claim.rb
|
|
300
384
|
- lib/generators/add_auth/challenge/challenge_generator.rb
|
|
301
385
|
- lib/generators/add_auth/challenge/templates/recaptcha.rb.tt
|
|
302
386
|
- lib/generators/add_auth/challenge/templates/turnstile.rb.tt
|
|
303
387
|
- lib/generators/add_auth/controllers/controllers_generator.rb
|
|
388
|
+
- lib/generators/add_auth/devise_accounts/devise_accounts_generator.rb
|
|
389
|
+
- lib/generators/add_auth/devise_accounts/templates/prepare_add_auth_devise_accounts.rb.tt
|
|
304
390
|
- lib/generators/add_auth/ejection.rb
|
|
305
391
|
- lib/generators/add_auth/email_link/email_link_generator.rb
|
|
306
392
|
- lib/generators/add_auth/email_link/templates/add_add_auth_email_binding.rb.tt
|
|
@@ -310,6 +396,14 @@ files:
|
|
|
310
396
|
- lib/generators/add_auth/email_tokens/email_tokens_generator.rb
|
|
311
397
|
- lib/generators/add_auth/email_tokens/templates/add_auth_sign_in_token.rb
|
|
312
398
|
- lib/generators/add_auth/email_tokens/templates/create_add_auth_sign_in_tokens.rb.tt
|
|
399
|
+
- lib/generators/add_auth/external_identities/external_identities_generator.rb
|
|
400
|
+
- lib/generators/add_auth/external_identities/templates/add_add_auth_external_enrollment.rb.tt
|
|
401
|
+
- lib/generators/add_auth/external_identities/templates/add_add_auth_external_identity_validity.rb.tt
|
|
402
|
+
- lib/generators/add_auth/external_identities/templates/add_auth_external_identity.rb
|
|
403
|
+
- lib/generators/add_auth/external_identities/templates/add_auth_external_transaction.rb
|
|
404
|
+
- lib/generators/add_auth/external_identities/templates/create_add_auth_external_identities.rb.tt
|
|
405
|
+
- lib/generators/add_auth/external_identities/templates/providers.rb
|
|
406
|
+
- lib/generators/add_auth/feature_configuration.rb
|
|
313
407
|
- lib/generators/add_auth/install/install_generator.rb
|
|
314
408
|
- lib/generators/add_auth/install/templates/initializer.rb
|
|
315
409
|
- lib/generators/add_auth/javascript/javascript_generator.rb
|
|
@@ -317,6 +411,11 @@ files:
|
|
|
317
411
|
- lib/generators/add_auth/javascript/templates/codec.js
|
|
318
412
|
- lib/generators/add_auth/javascript/templates/passkey.js
|
|
319
413
|
- lib/generators/add_auth/mailer_views/mailer_views_generator.rb
|
|
414
|
+
- lib/generators/add_auth/mobile_sessions/mobile_sessions_generator.rb
|
|
415
|
+
- lib/generators/add_auth/mobile_sessions/templates/add_add_auth_mobile_sessions.rb.tt
|
|
416
|
+
- lib/generators/add_auth/mobile_sessions/templates/add_auth_mobile_handoff.rb
|
|
417
|
+
- lib/generators/add_auth/mobile_sessions/templates/create_add_auth_mobile_handoffs.rb.tt
|
|
418
|
+
- lib/generators/add_auth/mobile_sessions/templates/mobile.rb
|
|
320
419
|
- lib/generators/add_auth/notifications/notifications_generator.rb
|
|
321
420
|
- lib/generators/add_auth/notifications/templates/add_auth_security_event.rb
|
|
322
421
|
- lib/generators/add_auth/notifications/templates/create_add_auth_security_events.rb.tt
|