calendar – 没有明文密码的Exchange Web服务器到服务器身份验证?

calendar – 没有明文密码的Exchange Web服务器到服务器身份验证?,第1张

概述我正在构建一个运行自动化流程的服务器应用程序,该流程需要与Exchange服务器兼容,直到2007版本.我目前通过Azure AD使用OAuth进行Office 365连接,但我仍在尝试为内部部署找到解决方案2013年之前的交流. 我一直在阅读有关Exchange身份验证(基本,NTLM等)的内容,我似乎无法找到任何对长期令牌系统的引用,这将允许我使用一次性密码设置身份验证.我非常强烈不愿意将用户 我正在构建一个运行自动化流程的服务器应用程序,该流程需要与Exchange服务器兼容,直到2007版本.我目前通过Azure AD使用OAuth进行Office 365连接,但我仍在尝试为内部部署找到解决方案2013年之前的交流.

我一直在阅读有关Exchange身份验证(基本,NTLM等)的内容,我似乎无法找到任何对长期令牌系统的引用,这将允许我使用一次性密码设置身份验证.我非常强烈不愿意将用户密码存储在中央数据库中,加密与否,因为它具有巨大的安全责任,可以进行逆向工程.

有什么我想念的吗?

有没有办法在没有密码的情况下每次对Exchange进行身份验证?

解决方法 回答我自己的问题作为后续行动,因为我对一些回复和/或我通过广泛搜索找到的内容不满意.

在对Exchange服务器,它们如何进行身份验证以及支持和使用的协议进行大量研究之后,我发现了我认为最好的选择:NTLM.

现在,让我解释一下.

我试图实现的目标如下:

>能够对Exchange 2007服务器进行身份验证
>通过初始过程将身份验证设置为“一次性设置”
>永远不要存储纯文本密码(特别是在平台/服务中央数据存储区中)

考虑到这些要点:

>我无法使用“Basic”身份验证,因为它需要在中央数据存储区中以纯文本格式存储用户密码
> OAuth不起作用,因为它仅在Exchange 2013上受支持

有了这个,我真的只留下了NTLM.不幸的是,我已经知道NTLM有一个历史悠久的安全漏洞而不是它的多年遗产,但我更多地了解它是否能以某种方式满足我的要求.

不幸的是,NTLM长期以来在其规格方面保持了一点“秘密”.这是一个专有的规范,所以关于它内部的信息很遗憾是相当不常见的.很长一段时间,关于NTLM的唯一真正的规范信息来源实际上是info that was reverse-engineered (thanks Eric Glass!).幸运的是,微软最终确实开始到publish documentation on NTLM on their MSDN site more recently.

在仔细研究协议之后,在测试Exchange服务器上以许多不同的配置排列运行一些测试后,我意识到NTLM实际上符合我的所有要求.怎么样?好吧,多亏了协议的工作方式,一旦一个凭证被哈希(在规范[LM,NTv1,NTv2]中可能的3种方式之一),它不需要再次进行哈希处理目标.这意味着,类似于对典型注册机制的用户密码进行哈希处理,您可以直接询问Exchange / NTLM凭据,然后对凭证进行一次哈希处理.

注意!!!有一个问题!

请记住,能够对凭证进行一次哈希并多次使用它意味着哈希有点像“密码等效”.我的意思是,哈希可以像密码一样使用,因为它是未来进行身份验证所需的唯一信息之一. (这通俗地称为“pass-the-hash”).

但是,考虑到以纯文本形式存储密码的替代方案,这仍然要好得多.为什么?因为至少你没有存储可以在任何其他身份验证方案中使用的原始凭证,或者泄露可能在其他环境中共享的密码(是的,不幸的是,人们确实这样做了).

鉴于这些知识,在存储这些散列凭证时仍应非常小心.最后,如果能够使用另一种更强的认证方案,请使用它.

因此,由于NTLM协议的工作方式,它符合要求:

>能够对Exchange 2007服务器进行身份验证

> NTLM适用于所有Exchange服务器2007

>通过初始过程将身份验证设置为“一次性设置”

>只需输入一次凭证和目标,因为一旦与服务器进行初始握手,您就会知道授权方案有效. (当然,这并不认为可以随时更改远程Exchange服务器的配置.因此,仍应非常适当地进行错误处理)

>永远不要存储纯文本密码(特别是在平台/服务中央数据存储区中)

>而是存储散列凭证.然而,由于前面的注释中解释的“捕获”,应该非常小心,采用潜在的双重加密技术.

无论如何,我希望其他人在某些时候发现这一点,这样他们就不必像我那样做那么多的规范阅读和实验.

另外,值得注意的是,我注意到NTLM的开源实现不仅罕见,而且通常只有半完成,我的团队已经开源我们的PHP NTLM实现. It’s available on GitHub.

总结

以上是内存溢出为你收集整理的calendar – 没有明文密码的Exchange Web服务器到服务器身份验证?全部内容,希望文章能够帮你解决calendar – 没有明文密码的Exchange Web服务器到服务器身份验证?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1078079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存