authing_ruby 1.0.7 → 1.0.8

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
  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