【问题标题】:xdmp http post options for token authentication用于令牌身份验证的 xdmp http post 选项
【发布时间】:2015-09-08 14:29:51
【问题描述】:

我找到了https://docs.marklogic.com/xdmp:http-post 函数。

我想使用令牌身份验证方法将 JSON 文档从 MarkLogic 发送到中间层 node.js 应用程序。我们使用令牌认证。

我应该使用哪些 http 选项来完成这项工作?

例子:

(: Use xdmp:quote to encode the XML as a string
   because the <data> options element is a string :)
let $payload := xdmp:quote('
{"alert": {
                "id": "123abc",
                "type": "sensorAlert",
                "timestamp": "2015-08-12 T 13:48:45 CET",
                "actions": ["go get them!"],
                "status": "active"
            }
}'
)
return
xdmp:http-post("http://cluey-app-ml1:9070/alert",
     <options xmlns="xdmp:http">
       <authentication method="basic">
         <username>myname</username>
         <password>mypassword</password>
       </authentication>
       <data>{$payload}</data>
       <headers>
         <content-type>application/json</content-type>
       </headers>
     </options>)

当然,按原样发布此内容会给我一个未经授权的 401 响应:

<response xmlns="xdmp:http">
<code>401</code>
<message>Unauthorized</message>
<headers>
<x-powered-by>Express</x-powered-by>
<access-control-allow-origin>*</access-control-allow-origin>
<content-type>text/html; charset=utf-8</content-type>
<content-length>26</content-length>
<etag>W/"1a-14Zh6wfLQpiHPatjrIEVAQ"</etag>
<set-cookie>connect.sid=s%3AT_lwAwvX9-1rJ7It7x42w126532HtIA2.nr5Zt2dONb6Q0uD7LpryZrpEsOUvXL8ZHUiTr8hOsfg; Path=/; HttpOnly</set-cookie>
<date>Tue, 08 Sep 2015 13:50:27 GMT</date>
<connection>keep-alive</connection>
</headers>
</response>
Text document 
Could not broadcast alert.

【问题讨论】:

  • 我不知道如何以这种方式使用令牌身份验证,但是您是否考虑过使用 MarkLogic Node Client API 并拉取信息而不是推送信息?
  • 嗨,戴夫,是的,我们考虑过这一点,但时间在这个应用程序中至关重要,秒数很重要,因此需要在数据库收到警报后立即推送

标签: marklogic marklogic-8


【解决方案1】:

虽然不是我所知道的“功能”,但可能没有什么可以阻止您执行请求“A”来获取您的令牌,将其存储在 ML 中,然后通过设置适当的标头信息将其用于后续请求 您的令牌系统要求的(例如 Authentication:Bearerxxxxx 为例)

令牌作为标头信息发回。您可以在此页面查看如何设置标头信息的选项:https://docs.marklogic.com/xdmp:http-get

编辑如下以反映评论:

<headers>
  <access-token>eyJ0eXAiO...RDHaNEjftfja-MofLqlv6fUKmN7k...</access-token>
  <content-type‌​>application/json</content-type>
</headers>

【讨论】:

  • 嗨,大卫,这正是我的问题,我应该在选项中添加什么才能发送与 -H 'Content-Typeaccess-token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImRhdmlkIn0 之类的 curl 标头等效的 POST。 TpHWyRZasjmI3VGRDHaNEjftfja-MofLqlv6fUKmN7k'
  • 您可以根据需要添加任意数量的标题条目eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6I‌​mRhdmlkIn0.TpHWyRZasjmI3VGRDHaNEjftfja-MofLqlv6fUKmN7kIn0.TpHWyRZasjmI3VGRDHaNEjftfja-MofLqlv6fUKmN7k应用程序/ /content-type>
猜你喜欢
  • 2019-11-24
  • 1970-01-01
  • 2017-11-16
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 2016-01-23
相关资源
最近更新 更多