やろうとしていること
salesforceにパラメータを送るアプリをRubyで作成しており、その過程でJWTを使用し、認証を行いたいと考えております。
ドキュメントや調べて出てきた海外の記事を参考にX509証明書の非公開鍵の設定以外はできたように思えます。
#試したこと
こちらが試したコードです。
Ruby
1class Salesforce 2 def initialize 3 @cert_file = File.join(File.dirname(__FILE__), *%w[server.crt]) 4 @base_url = "https://test.salesforce.com" 5 @auth_endpoint = "/services/oauth2/authorize" 6 @token_request_endpoint = "/services/oauth2/token" 7 @token_revoke_endpoint = "/services/oauth2/revoke" 8 @username = "aaaa@example.com" 9 @client_id = "3skfjgboabsofb@oaVFpKVtiEqqcOqBfzgasflganoKHyasfdasgI" 10 @private_key = OpenSSL::PKey::RSA.new(File.read(@cert_file)) ←ここでエラーが出ます。 11 end 12 13 14 def claim_set 15 { 16 iss: @client_id, 17 sub: @username, 18 aud: @base_url, 19 exp: (Time.now + 3.minutes).to_i.to_s 20 } 21 end 22 23 def jwt_bearer_token 24 JWT.encode(self.claim_set.to_s, @private_key, 'RS256') 25 end 26 27 def request_auth 28 post = {grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer", assertion: jwt_bearer_token} 29 uri = URI.parse("#{@base_url}#{@token_request_endpoint}") 30 https = Net::HTTP.new(uri.host, 443) 31 https.use_ssl = true 32 response = https.post(uri.path, post.to_query) 33 print response.body 34 end 35 print Salesforce.new.request_auth 36end 37
エラー内容
`initialize': Neither PUB key nor PRIV key: nested asn1 error (OpenSSL::PKey::RSAError)
参考
参考にしているのはこちらです。
セールスフォースドキュメント
https://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm&type=5
こちらを参考にしました。
https://salesforce.stackexchange.com/questions/274811/ruby-oauth-2-0-jwt-bearer-token-flow
こちらではpem形式のものは別に変換する可能性があるかもしれないとのことです。
また、パスワードのミスがあるという場合もあるようです。
あとは、\nを入れるという方法も書いてあります。
https://stackoverflow.com/questions/2293608/what-causes-neither-pub-key-nor-priv-key-nested-asn1-error-when-building-a-p
すみませんがよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー