rbsso 0.1.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 75980e68e3d92bcfc59318aa7cdd6b36cc543ca6
4
- data.tar.gz: bd94e5d7917823d74151cf238afaa2e92ca72a5a
3
+ metadata.gz: b6439a85993ed2c25cf7a18a36dee23e59e9ec14
4
+ data.tar.gz: bdba3aa011488b4f543758d44a3edd07e5c65129
5
5
  SHA512:
6
- metadata.gz: f8572edfafd1de42e05e74c642225c648213bcb4e2d4223b4eecd58d598bffefa08e7c8f0cf49bf73d9b53577508bfb5dc550da06a5f708f872de6d328a15736
7
- data.tar.gz: a06367346e63c690e1777cd8746d31f2da22612ec1d2ea8ce7253fd0f618e04eb97c6b46167a125999e73dc4abc1970d04959dd67f4d1b1672888aa72dc749c3
6
+ metadata.gz: 3886c8bfddd37a037a30763184a00851fe70df542fb05ec1184b361f14a619a9c910ab4596b24f8c92bff901140c35aced9acff3790b5d793185dee11b4e42f6
7
+ data.tar.gz: 1bf92c7714f70d2b9e9bd2d9b0c06b13d87a5d18fa7d3273552f036fbfa460b84b51984b84b0430919e0c63702be49d7cee5d2b786d49ea3f4540f322e8f175f
data/lib/rbsso/client.rb CHANGED
@@ -5,10 +5,11 @@ require 'rbsso/content'
5
5
  module RbSSO
6
6
  class Client
7
7
 
8
- def initialize(key)
8
+ def initialize(service, key)
9
9
  if !key || key !~ /[0-9a-f]{64}/i
10
10
  raise ArgumentError, "key MUST be 32 bytes, hex encoded string, was: #{key}"
11
11
  end
12
+ @service = service
12
13
  key = RbNaCl::VerifyKey.new [key].pack('H*')
13
14
  @verify_key = key
14
15
  end
@@ -16,10 +17,13 @@ module RbSSO
16
17
  def open(ticket_string)
17
18
  ticket = RbSSO::Ticket.open ticket_string, verify_key
18
19
  content = RbSSO::Content.parse ticket.content
20
+ if content.service != service
21
+ raise RuntimeError.new("Wrong service in ticket: #{content.service}")
22
+ end
19
23
  content.to_info
20
24
  end
21
25
 
22
26
  protected
23
- attr_reader :verify_key
27
+ attr_reader :verify_key, :service
24
28
  end
25
29
  end
data/lib/rbsso/content.rb CHANGED
@@ -2,6 +2,12 @@ module RbSSO
2
2
  class Content
3
3
  VERSION = 3
4
4
 
5
+ class VersionMismatch < ArgumentError
6
+ def initialize(version)
7
+ super "Version mismatch! Expected: #{VERSION} Got: #{version}."
8
+ end
9
+ end
10
+
5
11
  attr_reader :user, :service, :domain, :groups, :expires
6
12
 
7
13
  def initialize(user:, service:, domain:, groups: [], ttl: 3600, expires: nil)
@@ -11,10 +17,12 @@ module RbSSO
11
17
 
12
18
  def self.parse(string)
13
19
  version, user, service, domain, expires, groups = string.split '|'
14
- groups ||= ''
15
- groups = groups.split ','
16
- expires = expires.to_i
17
- new user: user, service: service, domain: domain, expires: expires, groups: groups
20
+ check_version(version)
21
+ new user: user,
22
+ service: service,
23
+ domain: domain,
24
+ expires: expires.to_i,
25
+ groups: (groups || '').split(',')
18
26
  end
19
27
 
20
28
  def to_s
@@ -37,5 +45,9 @@ module RbSSO
37
45
  expires == other.expires
38
46
  end
39
47
 
48
+ def self.check_version(version)
49
+ return if version.to_s == VERSION.to_s
50
+ raise VersionMismatch.new(version)
51
+ end
40
52
  end
41
53
  end
data/lib/rbsso/server.rb CHANGED
@@ -1,5 +1,6 @@
1
- require 'rbsso/content'
1
+ require 'rbnacl'
2
2
  require 'rbsso/ticket'
3
+ require 'rbsso/content'
3
4
 
4
5
  module RbSSO
5
6
  class Server
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbsso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Azul
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-12 00:00:00.000000000 Z
11
+ date: 2017-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbnacl
@@ -58,10 +58,66 @@ dependencies:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '5.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: minitest-autotest
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: autotest-suffix
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.1'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.1'
89
+ - !ruby/object:Gem::Dependency
90
+ name: simplecov
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.11'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.11'
103
+ - !ruby/object:Gem::Dependency
104
+ name: conventional-changelog
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.2'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.2'
61
117
  description: |
62
118
  This is a ruby version based on libsodium of "ai sso"(https://git.autistici.org/ai/sso).
63
119
 
64
- We'll provide an omniauth strategy. It could also be used in bonafide server to sign sso tickets to be consumed by soledad server.
120
+ We provide an omniauth strategy. It could also be used in bonafide server to sign sso tickets to be consumed by soledad server.
65
121
  email: azul@riseup.net
66
122
  executables: []
67
123
  extensions: []
@@ -72,7 +128,7 @@ files:
72
128
  - lib/rbsso/content.rb
73
129
  - lib/rbsso/server.rb
74
130
  - lib/rbsso/ticket.rb
75
- homepage: https://0xacab.org/azul/rbsso
131
+ homepage: https://0xacab.org/riseup/rbsso
76
132
  licenses:
77
133
  - MIT
78
134
  metadata: {}