【问题标题】:Basic authentication session management Domino基本认证会话管理 Domino
【发布时间】:2015-04-23 05:39:23
【问题描述】:

我有以下用例,我需要一些解决方案的指针/提示/方法。

我必须为 android 应用程序创建一个登录屏幕,然后会有其他屏幕可以与托管在 Domino 上的服务器进行基于 REST 的调用。

现在对于登录活动,我认为基本身份验证似乎是最简单的解决方案(如果我错了,请纠正我)。服务器已经具有支持基于 Web 的应用程序的功能(基于会话的通信,浏览器使用 domino 自动处理)。

现在是问题部分

  1. 我不希望服务器更改其用于 android 的代码,因为服务器使用相同数据满足对 android 应用程序或基于 Web 的应用程序的请求。如何通过基本身份验证实现用户范围(即我可以知道后续操作是由刚刚通过 android 应用程序成功登录的同一用户完成的)。我怀疑 Domino 不允许您访问会话 ID 或 DOM 身份验证 ID,在基于 Web 的应用程序的情况下,浏览器本质上会传递这些 ID。如何从 android 应用程序实现此功能?
  2. 如果我使用基本身份验证并发送数据,然后我注意到如果我在第一次调用 PUT 期间设置了一些会话范围的变量,那么当我尝试从我的 android 应用程序的下一次 GET 调用中获取它时,我不会取回该值.我相信这两个电话之间的会话不再存在?
  3. 在基本身份验证的情况下,服务器是否需要在成功登录后的后续调用中做一些额外的事情?例如:使用 REST api 获取特定大学的学生列表,但为了检查用户是否有权访问此类操作服务器必须知道此用户访问权限,通常存储为会话信息在基于会话的身份验证过程中。

我了解在基本身份验证的情况下,我们会在每次调用服务器时传递用户 ID 和密码。我的主要问题是服务器如何处理这个用户名和密码?是否每次都会做某种检查来检查相关操作的用户权限?

谢谢

【问题讨论】:

  • 这是一组非常广泛的问题——对于stackoverflow来说太宽泛了。我没有所有答案,但我认为您可以使用覆盖会话身份验证规则来解决问题 #1。有关详细信息,请参阅www-10.lotus.com/ldd/ddwiki.nsf/dx/…。关于问题2,请澄清问题。 REST 请求通常是无状态的,所以我不知道您所说的“某些会话范围的变量”是什么意思。什么会议?

标签: android rest session lotus-domino basic-authentication


【解决方案1】:

这是:

我怀疑 Domino 不允许您访问会话 ID 或 DOM 身份验证 在基于 Web 的情况下,浏览器本质上传递的 ID 应用。如何从 android 应用程序实现此功能

Domino 只是使用 cookie 将会话信息来回传递给客户端。根据您在服务器上设置的会话身份验证类型,它是 DomAuthSessIdLtpaToken。请参阅here 了解更多信息。

所以我不同意你关于基本身份验证是最简单方法的假设。如果服务器已经设置为会话身份验证,那么您所要做的就是确保从登录屏幕的响应中获取 cookie 并将其添加到所有 HTTP 调用中,然后您将获得会话。

【讨论】:

  • 也就是说,我同意@Dave Delay 在他的评论中所说的话。如果您使用的是 REST API(例如 Domino 数据服务),它应该是无状态的,基本身份验证就可以了。
  • 感谢您的回复。对不起,如果我的问题脱钩了,但我能够完全按照你所说的来解决这个问题。我使用 DomAuthSessId 在每次后续调用中放入 Http 标头,它工作正常。但是,我第一次使用来自 android 应用程序的基本身份验证。您是否认为我也可以使用其他一些身份验证机制,因为我不需要每次都向服务器发送用户 ID 密码,因为它只是检查 http 标头中的 DomAuthSessId 以进行后续调用!
  • 我认为您必须已经在使用会话身份验证,否则 DomAuthSessionId cookie 将不存在。所以没有理由在每个请求中继续发送用户 ID 和密码。
  • 对不起,如果我没有说清楚。是的,你是对的,我不会在每个请求中发送用户 ID 密码。但是,我只是第一次使用基本身份验证发送它。它工作正常,但我只是想知道是否有其他方法可以做到这一点。我的意思是不使用 android 的基本身份验证
  • 不,从 android 我使用基本身份验证进行第一次登录调用。但是,服务器以相同的方式处理它,但我在我的 android 应用程序中读取了 http 响应标头,我注意到它在 cookie 标头中有 DomAuthSessionId 和 SessionID。所以我把它拉出来,并在下一次对服务器的 GET 调用中将其设置为 Cookie 标头。如果我第一次没有在 HTTP 标头中将 BasicAuth 字符串作为 Authorzation 参数提供,我会返回 401。那是因为服务器配置为响应此特定 URL 的基本身份验证。但是,正如我所说,我仍然在标题中看到 DomAuthSessionId
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
  • 2014-01-24
  • 1970-01-01
  • 2013-07-02
  • 2021-09-28
相关资源
最近更新 更多