温室作业板API集成:基于SSL / TLS的HTTP基本认证

时间:2015-02-23 23:58:48

标签: api ssl http-proxy http-basic-authentication

我正在使用Greenhouse API构建一个工作板,在作业应用程序表单数据的SSL / TLS的HTTP Basic Auth的最后一步上有点卡住了。特别是动作=“!!请求你的服务器必须进行!!”位于下方。

任何人都可以指出我如何实现这个目标的正确方向:

描述:/ applications方法接受表示作业应用程序的多部分表单POST。此方法需要HTTP Basic Auth over SSL / TLS:Basic Auth用户名是您的API密钥(位于API凭据页面上),不需要密码。正确表示此方法所需数据的表单将通过/ job API方法提供的“questions”数组构建,这组字段是特定于作业的(在作业方法文档中提供了更多详细信息)。

https://api.greenhouse.io/v1/applications/

<!-- 
EXAMPLE FORM BELOW (simplified):

Please keep in mind that the HTTP Basic Auth API token is a secret key.  Any form posts should be proxied by your own servers.  Any direct post to the /applications POST method would reveal your secret key to anybody that views source--which would be a very bad thing.
-->
<form method="POST" action="!!REQUEST MUST BE PROXIED ON YOUR SERVERS!!" enctype='multipart/form-data'>
  <!-- represents the ID of the job -->
  <input type="hidden" name="id" value="55555" />
  <!-- place the value of the gh_src URL parameter in the field below -->
  <input type="hidden" name="mapped_url_token" />
  <label>First Name <input type="text" name="first_name" /></label><br/>
  <label>Last Name <input type="text" name="last_name" /></label><br/>
  <label>Email <input type="text" name="email" /></label><br/>
  <label>Phone <input type="text" name="phone" /></label><br/>
  <label>Resume <input type="file" name="resume" /></label><br/>
  <label>Cover Letter <input type="file" name="cover_letter" /></label><br/>
  <label>LinkedIn Profile <input type="text" name="question_5555" /></label><br/>
  <label>Some dropdown
    <select name="question_3333">
      <option></option>
      <option value="1">Yes</option>
      <option value="0">No</option>
    </select>
  </label><br/>
  <label>Multi select with checkboxes<br/>
    <label><input type="checkbox" name="question_2222[]" value="2" /> Red</label><br/>
    <label><input type="checkbox" name="question_2222[]" value="5" /> Orange</label>
  </label><br/>
  <input type="submit" />
</form>

2 个答案:

答案 0 :(得分:3)

我构建了一个自定义Drupal模块,该模块使用Greenhouse Job Board API生成自定义应用程序表单。我最终做了以下事情:

  1. 我创建了一个自定义PHP库来使用API​​。

  2. 我使用了$job = $greenhouse->getJob([JOB_ID], true);。第二个参数表示是否返回问题字段。

  3. 我使用Drupal的表单API和上面请求中返回的问题字段构建了表单。

  4. 在表单提交中,我获取了所有提交的变量,并使用PHP Curl Class将其传递给Greenhouse。

  5. 对于简历/求职信字段,您必须提交多部分数据。确保您的请求标头包含:Content-Type: multipart/form-data; boundary=[YOUR_CUSTOM_BOUNDARY]

  6. 通过Curl将所有数据发布到https://[API-KEY]@api.greenhouse.io/v1/applications/

答案 1 :(得分:2)

他们要求您将表单发布到您自己的服务器上,然后让您的服务器POST到温室。否则,您需要在呈现的HTML中包含您的秘密和/或凭据,在这种情况下,任何人都可以提取它。

因此,您的HTML表单action属性将类似于:

<form method="POST" action="/applications/new" enctype="multipart/form-data">

然后你需要一个服务器端端点(Node,PHP,Ruby,Perl等)从浏览器获取表单输入并使用服务器端POST将其发送到Greenhouse。

对于BASIC身份验证,您将在凭据中包含您的凭据和/或机密作为标头。

当他们提到它必须是“over SSL / TLS”时,这意味着您必须在服务器端代码中使用“https”作为温室API URL。