【问题标题】:How to authenticate users in Lotus Domino 8.5.3 through Domino Data Service REST API如何通过 Domino 数据服务 REST API 在 Lotus Domino 8.5.3 中对用户进行身份验证
【发布时间】:2014-02-03 17:30:53
【问题描述】:

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

我可以在documentation 中看到“用于授权的请求标头值”,它说:

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

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

【问题讨论】:

    标签: api rest authentication xpages lotus-domino


    【解决方案1】:

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

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

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

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

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

    对于证书身份验证,嗯...这可能是一个太复杂的主题,无法在这里讨论。

    【讨论】:

    • 很好的描述。我们发现的一个典型模式:Domino 配置为一种形式的 cookie 身份验证,但在 names.nsf 中的 Internet 站点视图中,用于 API 访问的 URL 设置为 Basic - 请记住:经过身份验证的访问 - 任何方式都需要 https 是安全的
    【解决方案2】:

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

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

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

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

    Authorization:Basic am9objpwNDU1dzByZA==
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 2015-04-19
      • 2016-04-16
      相关资源
      最近更新 更多