class AuthingRuby::Common::PublicKeyManager
Public Class Methods
new(options = {})
click to toggle source
# File lib/authing_ruby/common/PublicKeyManager.rb, line 12 def initialize(options = {}) @options = options @public_key = nil # 用于缓存公钥,免得每次都发请求 @baseClient = Authentication::BaseAuthenticationClient.new(options) end
Public Instance Methods
getPublicKey()
click to toggle source
# File lib/authing_ruby/common/PublicKeyManager.rb, line 18 def getPublicKey # 用传进来的 publicKey option_publicKey = @options.fetch(:publicKey, nil) return option_publicKey if option_publicKey != nil # 用缓存的 publickKey return @public_key if @public_key != nil # 发请求获取 publicKey appHost = @baseClient.appHost() url = "#{appHost}/api/v2/.well-known" begin response = HTTP.get(url) rescue HTTP::ConnectionError => e # 处理失败情况 puts "authing_ruby gem 错误 HTTP::ConnectionError" puts "访问的 URL 是 #{url}" puts "如何解决:有可能是 appHost \"#{appHost}\" 填写错误,appHost 可能并不存在,请确认。" puts "第二种可能原因是您本地开启了 VPN,导致无法访问 \"#{appHost}\",您可手动访问此网站进行确认。" raise e.class, "Message: #{e.message}" return end response_text = response.body.to_s # {"code":200,"message":"获取成功","data":{"publicKey":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4xKeUgQ+Aoz7TLfAfs9+paePb\n5KIofVthEopwrXFkp8OCeocaTHt9ICjTT2QeJh6cZaDaArfZ873GPUn00eOIZ7Ae\n+TiA2BKHbCvloW3w5Lnqm70iSsUi5Fmu9/2+68GZRH9L7Mlh8cFksCicW2Y2W2uM\nGKl64GDcIq3au+aqJQIDAQAB\n-----END PUBLIC KEY-----\n"}} json = JSON.parse(response_text) publicKey = json['data']['publicKey'] @public_key = publicKey # 存入缓存 return publicKey end