external_identity 0.0.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 +7 -0
- data/README.md +16 -0
- data/lib/external_identity/identity.rb +8 -0
- data/lib/external_identity/manager.rb +33 -0
- data/lib/external_identity/middleware.rb +20 -0
- data/lib/external_identity/version.rb +5 -0
- data/lib/external_identity.rb +19 -0
- metadata +80 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ac62f20595ca3f477a16c151b0bbd428501e4bb0fa766db6359c95981bacbc07
|
4
|
+
data.tar.gz: fbb9c9d00d8abbc70a8a4cc4afe07f1e8e91ae289c51e7c413fccf19db443cff
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d1fa99e350a0cda6235023b6062ba9a3bf7e11a007ca12f22287854657b7a0523a3c146f11628e12b940453800d59ec3d0b2f9ccf10f05fdb8208ca7b9e29724
|
7
|
+
data.tar.gz: 2190bdb5e3c5e0145b260537a1cafd5850c9509a6b9a0a70fbd235abe37e6586a5e5901e3cefa61626d94f987cf4c0751d26093840c763235042e0560febbbdd
|
data/README.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
external_identity
|
2
|
+
-------------
|
3
|
+
[](https://github.com/kjellberg/external_identity/actions/workflows/rspec.yaml)
|
4
|
+
[](https://github.com/kjellberg/external_identity/actions/workflows/rubocop.yaml)
|
5
|
+
|
6
|
+
**external_identity** validates incoming authentication tokens (for example [jwt](https://datatracker.ietf.org/doc/html/rfc7519)) from external identity management services like [Auth0](https://auth0.com/) and [Firebase](https://firebase.google.com/docs/auth). It runs as a **Rack middleware** which means that it works seamlessly with Rails, Grape, Sinatra and other Rack based applications.
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add the following line to Gemfile:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem "external_identity", github: "kiqr/external_identity" # Use development branch until first release.
|
14
|
+
```
|
15
|
+
|
16
|
+
and run `bundle install` from your terminal to install it.
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ExternalIdentity
|
4
|
+
class Manager
|
5
|
+
attr_accessor :env
|
6
|
+
|
7
|
+
def initialize(env)
|
8
|
+
@env = env
|
9
|
+
end
|
10
|
+
|
11
|
+
def authenticate!
|
12
|
+
warden.authenticate!(scope: warden_scope)
|
13
|
+
end
|
14
|
+
|
15
|
+
def identity
|
16
|
+
@identity ||= warden.authenticate(scope: warden_scope)
|
17
|
+
end
|
18
|
+
|
19
|
+
def valid?
|
20
|
+
!!identity
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def warden
|
26
|
+
env['warden']
|
27
|
+
end
|
28
|
+
|
29
|
+
def warden_scope
|
30
|
+
ExternalIdentity.config.warden.scope || :external_identity
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ExternalIdentity
|
4
|
+
class Middleware
|
5
|
+
def initialize(app)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
# Setup the global accessable Rack env variable.
|
11
|
+
env['external_identity'] = ExternalIdentity::Manager.new(env)
|
12
|
+
|
13
|
+
# Wrap our app around Warden::Manager to make sure it's loaded already.
|
14
|
+
app_with_warden = Warden::Manager.new(@app)
|
15
|
+
|
16
|
+
# Call the app with our modified env.
|
17
|
+
app_with_warden.call(env)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'external_identity/version'
|
4
|
+
|
5
|
+
require 'dry-configurable'
|
6
|
+
require 'rack'
|
7
|
+
require 'warden'
|
8
|
+
|
9
|
+
module ExternalIdentity
|
10
|
+
extend Dry::Configurable
|
11
|
+
|
12
|
+
autoload :Manager, 'external_identity/manager'
|
13
|
+
autoload :Middleware, 'external_identity/middleware'
|
14
|
+
autoload :Identity, 'external_identity/identity'
|
15
|
+
|
16
|
+
setting :warden do
|
17
|
+
setting :scope, default: :external_identity
|
18
|
+
end
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: external_identity
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- KIQR
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-05-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dry-configurable
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.13'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.13'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: warden
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.2.9
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.2.9
|
41
|
+
description:
|
42
|
+
email: hello@kiqr.dev
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- README.md
|
48
|
+
- lib/external_identity.rb
|
49
|
+
- lib/external_identity/identity.rb
|
50
|
+
- lib/external_identity/manager.rb
|
51
|
+
- lib/external_identity/middleware.rb
|
52
|
+
- lib/external_identity/version.rb
|
53
|
+
homepage: https://github.com/kiqr/external_identity
|
54
|
+
licenses:
|
55
|
+
- MIT
|
56
|
+
metadata:
|
57
|
+
bug_tracker_uri: https://github.com/kiqr/external_identity/issues
|
58
|
+
documentation_uri: https://github.com/kiqr/external_identity/issues
|
59
|
+
source_code_uri: https://github.com/kiqr/external_identity
|
60
|
+
rubygems_mfa_required: 'true'
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.6.0
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
requirements: []
|
76
|
+
rubygems_version: 3.3.13
|
77
|
+
signing_key:
|
78
|
+
specification_version: 4
|
79
|
+
summary: Authentication solution for Ruby on Rails
|
80
|
+
test_files: []
|