gpt4 book ai didi

authentication - 如何离线使用LDAP凭证?

转载 作者:行者123 更新时间:2023-12-04 18:54:47 24 4
gpt4 key购买 nike

我想使用LDAP服务器(可能是Apache directory)来管理应用程序的登录名和凭据。该应用程序有时会需要脱机工作(在便携式计算机上),而无需连接到LDAP服务器。
本地复制凭据的最佳方法是什么?
我已经考虑过:

  • 使用Mitosis在便携式计算机上复制LDAP服务器。
    但这将是一个非常“繁重”且复杂的解决方案。而且有丝 split 似乎还没有完成。
  • 将凭据导出为可以存储在便携式计算机上的LDIF文件。
    但是我需要一种方法来检查LDIF文件是否确实来自LDAP服务器(该文件应包含一种签名)。此外,我想拒绝一周以上没有更新的LDIF文件。如果我能避免自己执行签名和年龄检查,那将是很好的。

  • 还有其他可以帮助我的想法或工具吗?
    编辑过的:我看过Kerberos,因为 documentation of the Java-Kerberos-API似乎说可以在本地缓存中使用缓存的票证,我认为这可能是我的解决方案。此外,可以将Kerberos作为插件添加到Apache目录中。
    但是Kerberos缓存存储了解密的票证(旨在与其他应用程序共享票证)。我需要票证的加密版本才能在脱机 session 中检查用户密码。结论:Kerberos不能为我的问题提供简单的解决方案。

    最佳答案

    知道如果用户必须先联机一次才能脱机登录就可以了,请考虑以下算法:

  • 用户为您的应用程序提供(username + password)
  • 应用程序尝试联系LDAP进行身份验证
  • 在线工作? (例如,连接成功)
  • 应用程序使用(username + password)对LDAP进行身份验证
  • 身份验证成功吗?
  • 应用程序将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 +所采用的用于对域 Controller 进行用户身份验证的模型。登录后,将尝试根据域 Controller 进行身份验证,并创建或更新用户配置文件的本地(缓存)版本。如果域 Controller 不可用,则提示用户根据本地(缓存)配置文件(如果存在)中捕获的凭据进行身份验证。

    编辑
  • 是的,从本质上讲,这是与在本地复制ldif文件相同的解决方案,除了在脱机时不必解析ldif之外。 :)
  • 应该理解,您可以将任何其他属性(权限等)存储在缓存中
  • 还可以理解,“安全存储”至少已签名。 :)您可以使用SHA-1哈希和 key 轻松地完成此操作,或者可以使用平台上可用的完整加密提供程序(如果使用Java,则可以使用Java)。因为里面没有 secret 信息。
  • 关于authentication - 如何离线使用LDAP凭证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/581247/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com