C# 如何在Windows应用商店应用程序客户端脱机时使用缓存的active directory
我正在为一家企业开发Windows应用商店应用程序。 客户端应用程序连接到服务器,并且只有在具有正确凭据且属于正确域的情况下才能登录到服务器 但是,当客户端应用程序无法连接到服务器时,用户必须使用Active Directory提供的缓存用户凭据,以便用户可以脱机工作。问题是Windows应用商店应用程序使用Azure Active Directory,因此我必须连接到internet 我希望能够使用位于普通桌面Windows应用程序System.DirectoryServices命名空间中的和类,几乎以以下方式搜索用户并验证凭据:C# 如何在Windows应用商店应用程序客户端脱机时使用缓存的active directory,c#,active-directory,windows-runtime,windows-store-apps,offline,C#,Active Directory,Windows Runtime,Windows Store Apps,Offline,我正在为一家企业开发Windows应用商店应用程序。 客户端应用程序连接到服务器,并且只有在具有正确凭据且属于正确域的情况下才能登录到服务器 但是,当客户端应用程序无法连接到服务器时,用户必须使用Active Directory提供的缓存用户凭据,以便用户可以脱机工作。问题是Windows应用商店应用程序使用Azure Active Directory,因此我必须连接到internet 我希望能够使用位于普通桌面Windows应用程序System.DirectoryServices命名空间中的和
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://" + domain, username, password, AuthenticationTypes.Secure);
DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry);
directorySearcher.FindOne();
实际上,在你试图实现的目标中存在着冲突:
- 您可以使用active directory根据中央用户存储库对某人进行身份验证(这比任何本地用户凭据表示更难被黑客攻击)
- 您不想使用中央active directory,因为它会占用您的internet连接
- 任何可以在没有身份验证的情况下完成的操作都可以在没有身份验证的客户机上进行(例如,创建某个内容的草稿版本,准备更改建议)
- 任何需要以经过身份验证的方式进行的操作都需要使用真实的internet连接进行真实身份验证(签入草稿以激活,应用更改)
通常情况下,这类软件项目的复杂性是仅验证或无验证项目的2-10倍。祝您好运。我们的身份验证是通过wcf服务完成的,但由于我们的技术人员在现场使用了客户端,因此无法始终保证与internet的连接。因此,在这些情况下,身份验证必须以某种方式脱机完成。我会弄明白的,谢谢你提供的信息!如果您对客户端拥有完全控制和信任,则可以使所有客户端都成为只读域控制器。然而,这是一个有点黑客的解决方案,可能会引起安全问题,例如:如果任何笔记本电脑丢失,您就有可能将您的所有用户数据暴露给某人(无论是谁)。最好的方法是将需要身份验证的活动与不需要身份验证的活动解耦。