如何使用LDAP凭证离线?
-
06-09-2019 - |
题
我想用一个LDAP server(可能 Apache directory)管理的登录和凭据的应用程序。时应用的需要工作脱机(笔记本电脑上)没有连接到LDAP server.
什么是最好的方式,复制证书localy?
我已经想过:
使用 有丝分裂 复制LDAP server的笔记本电脑。
但是,这将是一个很"大"的和复杂的解决方案。而且有丝分裂的似乎不可能完成。
出口的凭据的因素,可能存在的笔记本电脑。
但是我需要的方式来检查素实际上来自LDAP server(该文件应包括一种签名)。而且我想拒绝素的文件,没有以更新对一个多星期。这将是很好如果我可以避免实施签署和年龄的检查自己。
任何其他意见或工具,可以帮助我吗?
编辑编辑: 我不得不看看Kerberos因为 文件的Java-Kerberos-API 似乎是说,它能够使用缓存机票在一个地方缓和我想这可能是一个解决方案对于我。此外Kerberos可以添加插件Apache Directory.但Kerberos高速缓冲存储解密的票(旨在分享他们与其他应用)。我需要的加密版本票,能够检查的用户密码在线下届会议。结论:Kerberos不能提供一个简单的解决我的问题。
解决方案 2
这是解决我决定使用(我已经描述它在一个编辑我的问题,但我想要能够接受的回答"紧密"的问题):
因为我还没有找到另一解决方案,我决定用一个素的出口、增加时间戳作的评论开头的文件,然后签署该文件。签署该文件,我计算的散列值(SHA-1)的文件+一个秘密的关键。签名加以评论开头的文件。检查签名我去掉第一线签署的文件和重新计算的散列值。
其他提示
知道 它将可能确定如果用户必须登录在一旦在线上之前能够登录离线, 考虑下列算法:
- 用户提供应用程序
(username + password)
- 应用程序的尝试接触
LDAP
为身份验证- 在网上工作?(例如连接成功)
- 应用程序认证对使用LDAP
(username + password)
- 身份验证成功的?
- 申请商店 或更新
hash(password)
作为(cached_credentials)
对于(username)
成当地的安全储存 - 应用程序的进行 身份验证
[[STOP]]
- 申请商店 或更新
- 认证失败?
- 应用程序的进行 非身份验证 (错误的凭证)
[[STOP]]
- 应用程序的进行 非身份验证 (错误的凭证)
- 身份验证成功的?
- 应用程序认证对使用LDAP
- 脱机工作?(例如网络错误)
- 应用程序的尝试取回
(cached_credentials)
对于(username)
从当地的安全储存(cached_credentials)
存在AND
更近(1 week)
?- 应用程序比较
(cached_credentials)
反对hash(password)
- 比赛?
- 应用程序的进行 身份验证
[[STOP]]
- 应用程序的进行 身份验证
- 没有比赛?
- 应用程序的进行 非身份验证 (错误的凭证)
[[STOP]]
- 应用程序的进行 非身份验证 (错误的凭证)
- 比赛?
- 应用程序比较
(cached_credentials)
不存在OR
太近于(1 week)
?- 应用程序的进行 非身份验证 (网络出错)
[[STOP]]
- 应用程序的进行 非身份验证 (网络出错)
- 应用程序的尝试取回
- 在网上工作?(例如连接成功)
这是(或者是,请参考),通过该方式,同样的模式采用Windows NT+用户身份验证域控制器。在登录尝试进行身份验证域控制器,并创建或更新当地的(缓存)版本的用户配置文件。如果域控制器不适用,提示用户进行身份验证的凭据捕获在地方(缓存)文件(如果存在)。)
编辑
- 是的,这是在精神,同样的解决方案作为复制素在当地,除了你没有分析素当你离线。:)
- 据了解,你可以存储的任何其他属性(权限,等等)。 在你缓存
- 它也理解,'安全的储存'至少是签署。:)你可以很容易地做到这一点足有SHA-1散列和一个秘密,或者您可以使用成熟的密码提供者可以在你的平台(或者,如果使用Java。) 你不需要地穴它只要没有秘密信息存储内。