anoubis_sso_server 1.0.2 → 1.0.5
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/app/controllers/anoubis_sso_server/application_controller.rb +11 -5
- data/app/controllers/anoubis_sso_server/open_id_controller.rb +56 -3
- data/config/locales/en.yml +0 -3
- data/config/locales/ru.yml +0 -3
- data/config/routes.rb +1 -0
- data/lib/anoubis_sso_server/version.rb +1 -1
- metadata +15 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 756380520fc961ba7aaa7b12dc87efc34f4a598413677ea465392ebb355b9e70
|
4
|
+
data.tar.gz: eac01982f78ac39f0777d6579174c83eb0005a19fc9716f4f706ac006a0a9aa4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f64317d742c45171e135251f77d0207b9dae0434db471d0e4247be6c8f33a2b4ee526697c82756765063e16224d94e611aa356730e3f48c3cd952ada4014f73
|
7
|
+
data.tar.gz: 70728997ed2c5bed827e84751ecff752b8264c5a5629c6b9e2832c3e0e1203ab1f35ec01a1b43a29d52e1c66fd6b215539dc7222d6af8f008d256f5d04a44ba8
|
@@ -38,18 +38,24 @@ class AnoubisSsoServer::ApplicationController < Anoubis::ApplicationController
|
|
38
38
|
if access_allowed?
|
39
39
|
options request.method.to_s.upcase
|
40
40
|
else
|
41
|
-
render_error_exit({ error: I18n.t('errors.access_not_allowed') })
|
41
|
+
render_error_exit({ error: I18n.t('anoubis.errors.access_not_allowed') })
|
42
42
|
return
|
43
43
|
end
|
44
44
|
|
45
|
-
if
|
46
|
-
if
|
47
|
-
if
|
48
|
-
return if !
|
45
|
+
if authenticate?
|
46
|
+
if authentication
|
47
|
+
if check_menu_access?
|
48
|
+
return if !menu_access params[:controller]
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
+
after_sso_server_initialization
|
54
|
+
end
|
55
|
+
|
56
|
+
##
|
57
|
+
# Procedure fires after initializes all basic parameters of {AnoubisSsoServer::ApplicationController}
|
58
|
+
def after_sso_server_initialization
|
53
59
|
#puts etc.inspect
|
54
60
|
end
|
55
61
|
|
@@ -197,7 +197,7 @@ class AnoubisSsoServer::OpenIdController < AnoubisSsoServer::ApplicationControll
|
|
197
197
|
|
198
198
|
header = {
|
199
199
|
alg: "RS256",
|
200
|
-
kid: "public:#{current_system.
|
200
|
+
kid: "public:#{current_system.uuid}",
|
201
201
|
typ: "JWT"
|
202
202
|
}
|
203
203
|
|
@@ -249,8 +249,8 @@ class AnoubisSsoServer::OpenIdController < AnoubisSsoServer::ApplicationControll
|
|
249
249
|
uuid: user.uuid
|
250
250
|
}
|
251
251
|
|
252
|
-
|
253
|
-
|
252
|
+
redis.set("#{redis_prefix}token:#{result[:access_token]}", token_hash.to_json, ex: current_system.ttl)
|
253
|
+
redis.del("#{redis_prefix}code:#{params[:code]}")
|
254
254
|
|
255
255
|
options
|
256
256
|
|
@@ -265,6 +265,59 @@ class AnoubisSsoServer::OpenIdController < AnoubisSsoServer::ApplicationControll
|
|
265
265
|
redirect_to sso_login_url, { allow_other_host: true }
|
266
266
|
end
|
267
267
|
|
268
|
+
##
|
269
|
+
# Action that returns user information parameters
|
270
|
+
def userinfo
|
271
|
+
auth_token = request.env.fetch('HTTP_AUTHORIZATION', '').scan(/Bearer (.*)$/).flatten.last
|
272
|
+
|
273
|
+
unless auth_token
|
274
|
+
render json: { error: I18n.t('anoubis.errors.access_not_allowed') }
|
275
|
+
return
|
276
|
+
end
|
277
|
+
|
278
|
+
begin
|
279
|
+
data = JSON.parse(redis.get("#{redis_prefix}token:#{auth_token}"), { symbolize_names: true })
|
280
|
+
rescue StandardError
|
281
|
+
data = nil
|
282
|
+
end
|
283
|
+
|
284
|
+
if data.class == Hash
|
285
|
+
data = nil unless data.key? :uuid
|
286
|
+
else
|
287
|
+
data = nil
|
288
|
+
end
|
289
|
+
|
290
|
+
if data
|
291
|
+
data = load_userinfo data[:uuid]
|
292
|
+
end
|
293
|
+
|
294
|
+
unless data
|
295
|
+
render json: { error: I18n.t('anoubis.errors.access_not_allowed') }
|
296
|
+
return
|
297
|
+
end
|
298
|
+
|
299
|
+
render json: data
|
300
|
+
end
|
301
|
+
|
302
|
+
##
|
303
|
+
# Load userinfo information from model and convert it into hash
|
304
|
+
# @param uuid [String] - User identifier
|
305
|
+
# @return [Hash] - User information
|
306
|
+
def load_userinfo(uuid)
|
307
|
+
data = user_model.where(uuid: uuid).first
|
308
|
+
|
309
|
+
return nil unless data
|
310
|
+
|
311
|
+
{
|
312
|
+
public: data.public,
|
313
|
+
email: data.email,
|
314
|
+
name: data.name,
|
315
|
+
surname: data.surname,
|
316
|
+
timezone: data.timezone,
|
317
|
+
locale: data.locale
|
318
|
+
}
|
319
|
+
end
|
320
|
+
|
268
321
|
##
|
269
322
|
# Check basic oauth parameters (client_id, redirect_uri)
|
270
323
|
def check_basic_parameters
|
data/config/locales/en.yml
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
en:
|
2
2
|
anoubis:
|
3
3
|
errors:
|
4
|
-
incorrect_login: "Incorrect login or password"
|
5
4
|
system_not_defined: "SSO system is not defined in Rails.configuration.anoubis_sso_system"
|
6
|
-
session_expired: "Session expired"
|
7
|
-
incorrect_user: "Incorrect user"
|
8
5
|
is_not_defined: "%{title} isn't defined"
|
9
6
|
is_not_correct: "%{title} isn't correct"
|
10
7
|
less_than: "%{title} length should be %{size} or more symbols"
|
data/config/locales/ru.yml
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
ru:
|
2
2
|
anoubis:
|
3
3
|
errors:
|
4
|
-
incorrect_login: "Некорректный логин или пароль"
|
5
4
|
system_not_defined: "SSO система не определена в Rails.configuration.anoubis_sso_system"
|
6
|
-
session_expired: "Сессия завершена"
|
7
|
-
incorrect_user: "Некорректный пользователь"
|
8
5
|
is_not_defined: "Переменная %{title} не определена"
|
9
6
|
is_not_correct: "Переменная %{title} некорректна"
|
10
7
|
less_than: "Длина переменной %{title} должна быть %{size} или более символов"
|
data/config/routes.rb
CHANGED
@@ -14,6 +14,7 @@ AnoubisSsoServer::Engine.routes.draw do
|
|
14
14
|
scope path: 'openid', defaults: { format: 'json' } do
|
15
15
|
get '.well-known/openid-configuration', to: 'anoubis_sso_server/open_id#configuration', as: 'openid_configuration'
|
16
16
|
get '.well-known/jwks.json', to: 'anoubis_sso_server/open_id#jwks', as: 'openid_jwks'
|
17
|
+
get 'userinfo', to: 'anoubis_sso_server/open_id#userinfo', as: 'userinfo'
|
17
18
|
get 'oauth2/auth', to: 'anoubis_sso_server/open_id#auth', as: 'oauth_auth'
|
18
19
|
post 'oauth2/token', to: 'anoubis_sso_server/open_id#access_token', as: 'oauth_token'
|
19
20
|
options 'oauth2/token', to: 'anoubis_sso_server/application#options', as: nil
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anoubis_sso_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrey Ryabov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anoubis
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.5
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
22
|
+
version: '2.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.5
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
32
|
+
version: '2.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rails
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,7 +212,8 @@ dependencies:
|
|
206
212
|
- - "~>"
|
207
213
|
- !ruby/object:Gem::Version
|
208
214
|
version: '1.25'
|
209
|
-
description: Library for create basic SSO Server based on OAUTH authentication
|
215
|
+
description: Library for create basic SSO Server based on OAUTH authentication for
|
216
|
+
simplify deployment.
|
210
217
|
email:
|
211
218
|
- andrey.ryabov@ra-company.kz
|
212
219
|
executables: []
|
@@ -248,6 +255,7 @@ metadata:
|
|
248
255
|
homepage_uri: https://github.com/RA-Company/
|
249
256
|
source_code_uri: https://github.com/RA-Company/anoubis_sso_server
|
250
257
|
changelog_uri: https://github.com/RA-Company/anoubis_sso_server/blob/main/CHANGELOG.md
|
258
|
+
documentation_uri: https://www.rubydoc.info/gems/anoubis_sso_server/1.0.5
|
251
259
|
post_install_message:
|
252
260
|
rdoc_options: []
|
253
261
|
require_paths:
|