如何通过Domino Data Service REST API在Lotus Domino 8.5.3中对用户进行身份验证

时间:2014-02-03 17:30:53

标签: api rest authentication xpages lotus-domino

我想知道如何通过Domino Data Service REST API对Lotus Domino 8.5.3中的用户进行身份验证。

我可以在documentation中看到“授权标头值”,并说:

  

授权可能需要其他标题,具体取决于   Domino服务器强加的安全性。

我还没有找到有关“其他标题”的信息。有谁知道如何验证?我们应该创建一个cookie并在每个请求头中发送它吗?

2 个答案:

答案 0 :(得分:7)

Domino支持三种身份验证形式:

  • 基本身份验证(基于标头)
  • 会话身份验证(基于cookie)
  • 证书身份验证(基于X.509)

您可以通过尝试在浏览器中的服务器上打开受保护的数据库来区分它们。如果您从浏览器获取内置对话框询问名称和密码,则它是基本的。如果您在浏览器中获得了一个实际的网页,要求提供名称和密码,那就是它的会话。如果您遇到一个对话框,要求您从浏览器的密钥库中选择一个证书,那么您将面临挑战。 (当然,您也可以启动Domino Administrator客户端,只需查看服务器的相关配置文档即可。)

对于基本身份验证,您发送的每个请求都必须包含here所述的标头。

对于会话身份验证,您需要发送cookie。实际上有两种不同的cookie格式,具体取决于Domino服务器是否已设置为单服务器或多服务器(SSO)会话身份验证。要获取cookie的值,您需要通过POST一个包含名称和密码的表单并读取成功POST后返回的cookie值来模拟实际用户登录。 (当您尝试手动登录时,可以通过研究在浏览器中返回给您的HTML来获取您必须POST的表单的详细信息。)

对于证书身份验证,嗯......这可能是一个非常复杂的主题。

答案 1 :(得分:2)

在“Domino数据服务用户指南和参考”的"Specifying request headers"部分中,他们提到了http标题“授权”:

  

授权用户名:密码(必须编码)

它说“必须编码”,但没有提到什么样的enconding。它是Base64编码,您可以在javascript atob() and btoa() functions中使用它进行编码和解码。

如果您的用户是“john”且您的密码是“p455w0rd”,则必须对字符串“john:p455w0rd”进行编码(包括冒号,您可以使用: btoa(“john:p455w0rd”)进行编码))如果您的身份验证是基本的,则添加“Basic”作为前缀:

Authorization:Basic am9objpwNDU1dzByZA==

就是这样。