现在,我们使用AD/Exchange在办公室现场管理我们所有的用户登录/电子邮件。每个人使用的主要应用程序都维护着自己的登录帐户,所有用户都有忘记登录信息的倾向,至少两次登录中的一次。
我正在考虑做的是使用AD在应用程序中对用户进行身份验证,这样他们在登录到自己的机器后甚至不必登录应用程序。
问题是,有少量用户在异地工作(应用程序可以在互联网上工作),只使用机器的本地帐户(这本身就造成了问题)。
我想知道的是,如果用户在异地工作,使用AD在现场对用户进行身份验证仍然是一种选择吗?
发布于 2009-09-15 04:59:53
几乎所有向程序员提出的问题的答案都是“是的……”重要的是省略号之后的内容。你可能不想做省略号之后的事情。
根据你问题中的信息,我认为答案是“否”,但在几种情况下,我们可以将其更改为“是”。
如果AD帐户仅用于验证用户是否知道密码,则可以创建一个web服务,将其托管在您的域中,将其设置为使用windows身份验证和SSL,修改应用程序以提示用户输入凭据,并使用这些凭据调用web服务中的方法。在该场景中,对web服务的成功调用意味着用户已通过身份验证。您可以使用用户的凭据从那里继续。
要检测应用程序是否需要提示用户输入凭据,可以先尝试使用用户的登录凭据调用web服务。如果此调用失败,则需要提示用户。
然而,不知道应用程序的其余细节意味着在许多情况下这是不够的。
我已经做了一些与我上面描述的非常相似的事情。我的方案是相反的:应用程序在互联网上工作,但我希望在机器具有域成员身份的情况下更容易登录。
顺便说一句,在家工作的成员:他们是在使用属于域的笔记本电脑,还是在使用未连接的机器?在这种情况下,您也许能够使用缓存的凭据,但您应该在ServerFault上提出这个问题。
发布于 2009-09-15 05:17:48
是的,你绝对可以做到。不过,这会有一些工作要做。
你的应用程序需要做的要么是自动找出它是否直接连接到办公室局域网,要么是远离办公室工作。当然,您也可以让用户告诉您:-)
如果它在LAN上,没问题-您可以通过AD进行身份验证。
如果它不在办公室,你可以调用公司局域网上的WCF服务,传递你的Windows凭据,并让它根据公司AD对您进行身份验证。如果您提供了正确的凭据集,您将通过身份验证并允许工作-如果不允许您登录,则对WCF服务的调用将失败。
您几乎可以通过使用Windows凭据自动完成此操作-在这种情况下,“远程”用户仍必须登录到您的域并使用他/她的正常Windows凭据;或者,您可以通过网络将用户名/密码传递给WCF,甚至在远程用户的计算机上安装证书,然后WCF将该证书映射到服务器端的AD帐户。
选项很丰富!:-)
Marc
https://stackoverflow.com/questions/1425105
复制相似问题