discourse-omniauth-jwt-xsolla 0.1.9 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b821f80225985aa7566f1fc54ef9bad9ebb8223d22d82dc5643ae2a5bb0b3eb
4
- data.tar.gz: 4cc84b87743d2f6f1733b94697d6f37dd62312a58021d42bc5a6fd8100aefa4a
3
+ metadata.gz: 8923f38506b8bbf100624c7b766a75f0ca387140911a105d4e96bb61ac3829b8
4
+ data.tar.gz: 20a32280b8cd55875490bb7301397726b759b62df552bfefd39027af17c4ddf0
5
5
  SHA512:
6
- metadata.gz: f3bc6d8698bd11db4632b1caecc5c66ef0a8902d75cb497eec210e33aee615109fcd4738b298ffb29c22ebf90b8e5033c1d05467b2b00e47a3a7831b469b64d0
7
- data.tar.gz: bfc97f50ad92690b381ee024198ed9fe8de52f13821fc2c7bf7a5a63c62b81ae7571bce70072a11ac351e14152137afccf683bc36578dede6ee2561e7245cab7
6
+ metadata.gz: 7a18fec04cdc14504639f260a0c2c52cca5c1d7be2fda5588e003aa284875f6587fa5d4468540442e50a8a1b75de359e2a54a04329b13b54f1ad1523cbd62718
7
+ data.tar.gz: 2f9e050894c520ea17b9d384676429e47b120aca3022c5032725811ad38218173bae1ec289cccfecab29c6a710dc9a1680b1544f2db381ffd5f87275d1ae614c
data/README.md CHANGED
@@ -1,85 +0,0 @@
1
- # OmniAuth::JWT
2
-
3
- [![Build Status](https://travis-ci.org/mbleigh/omniauth-jwt.png)](https://travis-ci.org/mbleigh/omniauth-jwt)
4
-
5
- [JSON Web Token](http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html) (JWT) is a simple
6
- way to send verified information between two parties online. This can be useful as a mechanism for
7
- providing Single Sign-On (SSO) to an application by allowing an authentication server to send a validated
8
- claim and log the user in. This is how [Zendesk does SSO](https://support.zendesk.com/entries/23675367-Setting-up-single-sign-on-with-JWT-JSON-Web-Token-),
9
- for example.
10
-
11
- OmniAuth::JWT provides a clean, simple wrapper on top of JWT so that you can easily implement this kind
12
- of SSO either between your own applications or allow third parties to delegate authentication.
13
-
14
- ## Installation
15
-
16
- Add this line to your application's Gemfile:
17
-
18
- gem 'omniauth-jwt'
19
-
20
- And then execute:
21
-
22
- $ bundle
23
-
24
- Or install it yourself as:
25
-
26
- $ gem install omniauth-jwt
27
-
28
- ## Usage
29
-
30
- You use OmniAuth::JWT just like you do any other OmniAuth strategy:
31
-
32
- ```ruby
33
- use OmniAuth::JWT, 'SHAREDSECRET', auth_url: 'http://example.com/login'
34
- ```
35
-
36
- The first parameter is the shared secret that will be used by the external authenticator to verify
37
- that. You must also specify the `auth_url` option to tell the strategy where to redirect to log
38
- in. Other available options are:
39
-
40
- * **algorithm:** the algorithm to use to decode the JWT token. This is `HS256` by default but can
41
- be set to anything supported by [ruby-jwt](https://github.com/progrium/ruby-jwt)
42
- * **uid_claim:** this determines which claim will be used to uniquely identify the user. Defaults
43
- to `email`
44
- * **required_claims:** array of claims that are required to make this a valid authentication call.
45
- Defaults to `['name', 'email']`
46
- * **info_map:** array mapping claim values to info hash values. Defaults to mapping `name` and `email`
47
- to the same in the info hash.
48
- * **valid_within:** integer of how many seconds of time skew you will allow. Defaults to `nil`. If this
49
- is set, the `iat` claim becomes required and must be within the specified number of seconds of the
50
- current time. This helps to prevent replay attacks.
51
-
52
- ### Authentication Process
53
-
54
- When you authenticate through `omniauth-jwt` you can send users to `/auth/jwt` and it will redirect
55
- them to the URL specified in the `auth_url` option. From there, the provider must generate a JWT
56
- and send it to the `/auth/jwt/callback` URL as a "jwt" parameter:
57
-
58
- /auth/jwt/callback?jwt=ENCODEDJWTGOESHERE
59
-
60
- An example of how to do that in Sinatra:
61
-
62
- ```ruby
63
- require 'jwt'
64
-
65
- get '/login/sso/other-app' do
66
- # assuming the user is already logged in and this is available as current_user
67
- claims = {
68
- id: current_user.id,
69
- name: current_user.name,
70
- email: current_user.email,
71
- iat: Time.now.to_i
72
- }
73
-
74
- payload = JWT.encode(claims, ENV['SSO_SECRET'])
75
- redirect "http://other-app.com/auth/jwt/callback?jwt=#{payload}"
76
- end
77
- ```
78
-
79
- ## Contributing
80
-
81
- 1. Fork it
82
- 2. Create your feature branch (`git checkout -b my-new-feature`)
83
- 3. Commit your changes (`git commit -am 'Add some feature'`)
84
- 4. Push to the branch (`git push origin my-new-feature`)
85
- 5. Create new Pull Request
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module JWT
3
- VERSION = "0.1.9"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -1,6 +1,7 @@
1
1
  require 'omniauth'
2
2
  require 'jwt'
3
3
  require 'net/http'
4
+ require 'json'
4
5
 
5
6
  module OmniAuth
6
7
  module Strategies
@@ -26,7 +27,10 @@ module OmniAuth
26
27
  def decoded
27
28
  @decoded ||= ::JWT.decode(request.params['token'], options.secret, false, {algorithm: options.algorithm})[0]
28
29
  uri = URI('https://login.xsolla.com/api/token/validate')
29
- res = Net::HTTP.post_form(uri, 'token' => request.params['token'])
30
+
31
+ req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
32
+ req.body = {token: request.params['token']}.to_json
33
+ res = http.request(req)
30
34
  raise ClaimInvalid.new("Token is not valid.") if res.code != '204'
31
35
 
32
36
  (options.required_claims || []).each do |field|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discourse-omniauth-jwt-xsolla
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-06-18 00:00:00.000000000 Z
13
+ date: 2019-07-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler