authing_ruby 1.0.7 → 1.0.8

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: 7aea089117c37cb1ba0f187b8ed1b26d3971af87adb438275c8ed5cf8ca74785
4
- data.tar.gz: 27dcf489dd3465c984898573ad885d778db8e32fd915b7538418e825f012888e
3
+ metadata.gz: 9696561d3570ff70b28f75570767136805742ba70e403511539139a51b598a5a
4
+ data.tar.gz: 7101d107a8f6717caf1a6673ce4639c6b957048a7bb386cc353ca677bcd9a548
5
5
  SHA512:
6
- metadata.gz: e50c2815f4009a9f0bbff3e8b22c02ee9b4ade53cf927c34daab002ac4c456383165dd7ffa248004246c0cf24e953aa40e2d46d0de7c3747f6934eebe416ea7f
7
- data.tar.gz: e2ce98c1d7d1af2d9a60df129bfa11b6c323f412a91e6143878c13c4a0b36b3d4b59fa090f309acb12963a572c797d3f687f83f3145b21b9a104739e6171b86f
6
+ metadata.gz: feb6dc9d637c783f968d251a5200ed5c4a5b372552e4395c5cad69ac5cfc170c1ddfa4f624ec0ebe3abb2489ca5afef7fb723658d1607d4655c7181a7bd4d431
7
+ data.tar.gz: ff0bce0012f356dc37ac21f9b5be1924684ab865b35b156ba8d2683273e839ad10ac363c2e69b6a00bbddbfb2bbb9e43546b2a11c07ece760c6417ba9a5c534f
@@ -252,9 +252,6 @@ module AuthingRuby
252
252
  return json
253
253
  end
254
254
 
255
- def checkLoginStatus
256
- end
257
-
258
255
  # 发送邮件
259
256
  # a = AuthingRuby::AuthenticationClient.new({appHost: "https://rails-demo.authing.cn", appId: "60800b9151d040af9016d60b"})
260
257
  # a.sendEmail('guokrfans@gmail.com', "VERIFY_EMAIL")
@@ -1,5 +1,6 @@
1
1
  require 'openssl'
2
2
  require "base64"
3
+ require 'jwt'
3
4
 
4
5
  module AuthingRuby
5
6
  class Utils
@@ -36,5 +37,41 @@ module AuthingRuby
36
37
  return result
37
38
  end
38
39
 
40
+ # verifyIDTokenHS256 函数用于验证 HS256 id_token
41
+
42
+ # 文档:使用指南 -> 常见问题 -> 如何验证用户身份凭证(token) -> 使用应用密钥验证 HS256 算法签名的 Token
43
+ # https://docs.authing.cn/v2/guides/faqs/how-to-validate-user-token.html#%E4%BD%BF%E7%94%A8%E5%BA%94%E7%94%A8%E5%AF%86%E9%92%A5%E9%AA%8C%E8%AF%81-hs256-%E7%AE%97%E6%B3%95%E7%AD%BE%E5%90%8D%E7%9A%84-token
44
+
45
+ # 官方文档目前(2021-5-13)是让用户自己处理 HS256 的 token,自己进行验证,但这样比较麻烦,我在 Ruby SDK 这边写一个方便的方法。
46
+ # verifyIDTokenHS256 返回 Boolean, true 代表 token 有效,false 代表无效
47
+
48
+ # 注意: 可以在 "应用 -> 授权 -> id_token 签名算法" 这里看到,选的是不是 HS256
49
+ # 如果是 HS256 才应该用这个方法来验证
50
+
51
+ # 参数 id_token 就是登录返回的 "token"
52
+ # 参数 appSecret 就是 Authing 里某个应用的 appSecret
53
+ def self.verifyIDTokenHS256(id_token, appSecret)
54
+ # 如果解码出错,直接返回 false
55
+ begin
56
+ hmac_secret = appSecret
57
+ decoded = JWT.decode id_token, hmac_secret, true, { algorithm: 'HS256' }
58
+ rescue => error
59
+ puts error.message
60
+ return false
61
+ end
62
+
63
+ payload = decoded[0]
64
+ header = decoded[1]
65
+
66
+ # 从 payload 获得过期时间,然后判断是否过期
67
+ exp = payload["exp"] # 过期时间
68
+ current_timestamp = Time.now.to_i
69
+ if current_timestamp < exp
70
+ return true # 没过期
71
+ else
72
+ return false # 过期了
73
+ end
74
+ end
75
+
39
76
  end
40
77
  end
@@ -2,5 +2,5 @@
2
2
  # https://github.com/Authing/authing.js/blob/cf4757d09de3b44c3c3f4509ae8c8715c9f302a2/src/lib/version.ts
3
3
 
4
4
  module AuthingRuby
5
- VERSION = "1.0.7".freeze
5
+ VERSION = "1.0.8".freeze
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authing_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - 郑诚(Zheng Cheng)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-06 00:00:00.000000000 Z
11
+ date: 2021-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest