如何使用rails-auth验证X509证书的主题?

时间:2016-09-07 12:56:10

标签: ruby-on-rails-4 docusignapi ruby-2.2

我正在尝试为Docusign Connect API保护一个端点。我已在docusign connect API配置中检查了使用X509证书签名消息

客户证书通用名称也会添加到Docusign帐户。

我正在尝试验证使用rails-auth gem发送的主题。

以下是ACL文件(acl.yml)的内容

---
- resources:
  - method: POST
    path: /
  allow_x509_subject:
    cn: "the common name"

我在config.ru文件中添加了以下内容

app = Rails.application
acl = Rails::Auth::ACL.from_yaml(                               
  File.read("path of the acl.yml"),                    
  matchers: { allow_x509_subject: Rails::Auth::X509::Matcher }  
)                                                               

acl_auth = Rails::Auth::ACL::Middleware.new(app, acl: acl)      

x509_auth = Rails::Auth::X509::Middleware.new(                  
  acl_auth,                                                     
  ca_file: "path_to_the_pem_file.crt",
  cert_filters: { 'X-SSL-Client-Cert' => :pem })                                                               

run x509_auth 

我收到以下异常。

  

*** Rack应用程序对象中的异常Rails :: Auth :: NotAuthorizedError(未经授权的请求)

Docusign帐户中添加的公用名与我在YML文件中提到的公用名相同。有人可以帮我找到这个问题吗?

我使用Ruby 2.2.2和rails 4.2.2,rails-auth 2.0.3

1 个答案:

答案 0 :(得分:0)

保护连接端点并确保所有呼叫均来自DocuSign的最佳方法是使用HMAC安全性。

使用HMAC安全性时,从您的DocuSign Connect帐户发送的每条消息都包含附加的标头值,对于您定义的每个HMAC密钥一个(最多一百个),其中包含用您的一个HMAC密钥散列的消息正文,使用HMACSHA256。例如,如果您定义了两个键,则将添加两个标头X-DocuSign-Signature-1和X-DocuSign-Signature-2。它们将包含分别用您的第一个和第二个秘密密钥散列的消息正文。

https://developers.docusign.com/esign-rest-api/guides/connect-hmac