当前位置:  开发笔记 > 运维 > 正文

如何脱机使用LDAP凭据?

如何解决《如何脱机使用LDAP凭据?》经验,为你挑选了1个好方法。

我想使用LDAP服务器(可能是Apache目录)来管理应用程序的登录和凭据.应用程序有时需要脱机工作(在笔记本电脑上)而无需连接到LDAP服务器.

复制凭证的最佳方法是什么?

我已经考虑过了:

使用Mitosis在笔记本电脑上复制LDAP服务器.

但这将是一个非常"沉重"和复杂的解决方案.此外,有丝分裂似乎尚未完成.

将凭据导出为可存储在笔记本电脑上的LDIF文件.

但我需要一种方法来检查LDIF文件是否实际来自LDAP服务器(该文件应包含一种签名).此外,我想拒绝超过一周没有更新的LDIF文件.如果我能避免自己实施签名和年龄检查,那就太好了.

还有其他可以帮助我的想法或工具吗?

编辑编辑:我看过Kerberos,因为Java-Kerberos-API的文档似乎说可以在本地缓存中使用缓存的票证,我认为这可能是我的解决方案.此外,Kerberos可以作为插件添加到Apache Directory中.但Kerberos缓存存储解密的票证(旨在与其他应用程序共享它们).我需要加密版本的票证才能在离线会话期间检查用户密码.结论:Kerberos不能为我的问题提供简单的解决方案.



1> vladr..:

知道如果用户必须先在线登录才能离线登录,那么可以考虑以下算法:

    用户为您的应用程序提供 (username + password)

    应用程序尝试联系LDAP进行身份验证

    在线工作?(例如连接成功)

      应用程序使用LDAP进行身份验证 (username + password)

      认证成功吗?

        应用商店或更新 hash(password)作为(cached_credentials)(username)进入本地安全存储

        应用程序进行身份验证 [[STOP]]

      验证失败?

        应用程序继续进行未经过身份验证(凭据不正确)[[STOP]]

    离线工作?(例如网络错误)

      应用程序试图获取(cached_credentials)(username)本地安全存储

      (cached_credentials)存在AND比最近(1 week)

        应用比较(cached_credentials)反对hash(password)

        比赛?

          应用程序进行身份验证 [[STOP]]

        不配?

          应用程序继续进行未经过身份验证(凭据不正确)[[STOP]]

      (cached_credentials)OR最近不存在比(1 week)

        应用程序继续进行未经过身份验证(网络错误)[[STOP]]

顺便说一句,这是(或者是IIRC)Windows NT +用于针对域控制器进行用户身份验证的相同模型.登录后,将尝试对域控制器进行身份验证,并创建或更新用户配置文件的本地(缓存)版本.如果域控制器不可用,系统将提示用户对本地(缓存)配置文件中捕获的凭据(如果存在)进行身份验证.


编辑

是的,在本质上,这与在本地复制ldif文件的解决方案相同,只是您在离线时不必解析ldif.:)

据了解,您可以在缓存中存储任何其他属性(权限等)

还应理解,"安全存储"至少是签名的.:)您可以使用SHA-1哈希和秘密轻松地完成此操作,或者您可以使用您平台上提供的成熟加密提供程序(如果使用Java,则可以使用Java.)您不需要将其加密因为里面没有秘密信息.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有