AD用户认证

2023-12-30

我正在尝试创建一个 ASP.NET (.NET 3.5) 网站以通过 Exchange Web 服务连接到我们的 Exchange 2010 服务器,当我定义要进行身份验证的用户名、密码和域时,我能够连接到 EWS,但我想,如果可能的话,不要在我的代码中包含登录详细信息。

在 IIS 中,我已在网站的 web.config 中为网站启用了集成 Windows 身份验证<authentication mode="Windows"/>.

以下代码是我一直在使用的代码:

svc.UseDefaultCredentials = True
svc.Credentials = New WebCredentials()
svc.Url = New Uri(svcURL)

使用上面的代码我收到消息:

当以没有邮箱的帐户身份提出请求时,您 必须为任何杰出的邮箱指定邮箱主 SMTP 地址 文件夹 ID。

当我尝试使用svc.Credentials = CredentialCache.DefaultNetworkCredentials(代替svc.Credentials = New WebCredentials())我收到错误消息:

无法将“System.Net.SystemNetworkCredential”类型的对象转换为 输入“Microsoft.Exchange.WebServices.Data.ExchangeCredentials”。

如前所述,唯一有效的方法是通过硬编码用户登录详细信息来定义要进行身份验证的用户凭据,但我宁愿不这样做:svc.Credentials = New WebCredentials("username","password","domain")

是否有人能够使用 ASP.NET 网站中当前登录用户的凭据对 EWS 进行身份验证?


默认情况下,无法将用户的凭据从一台服务器(托管 ASP.NET 站点的服务器)委托给另一台服务器(您的 Exchange 服务器)。这称为“服务器跃点”,Windows 默认情况下将阻止它作为安全措施。

您有几个选项可以解决此问题:

  1. 使用 Kerberos:启用 Kerberos 后,可以在使用 Windows 身份验证时在服务器之间委派用户凭据。我不知道如何设置 Kerberos 的确切细节,因为我只是一个谦虚的开发人员,但也许您的系统管理员可以帮助您。 AFAIK,您需要设置 ASP.NET 服务器以允许用户委派。
  2. 设置 IIS 应用程序池的用户身份:如果 Kerberos 不是一个选项,您可以更改 ASP.NET 站点运行所在的应用程序池的标识。首先在IIS管理器中定义一个新的应用程序池。然后转到该应用程序池的“高级设置”对话框,并将身份设置为允许访问 Exchange 服务器的域用户。有关应用程序池标识的更多信息,请参见此处:http://technet.microsoft.com/en-us/library/cc771170(v=WS.10).aspx http://technet.microsoft.com/en-us/library/cc771170(v=WS.10).aspx.
  3. 设置 元素:如果由于某种原因无法更改应用程序池,您可以尝试使用 web.config 文件中的 元素来模拟 ASP.NET 网站。 ASP.NET 为您提供了将凭据存储在注册表中的选项,这样您就不必将它们直接放入 web.config 文件中。更多信息请点击这里:http://msdn.microsoft.com/en-us/library/72wdk8cc(v=vs.90).aspx http://msdn.microsoft.com/en-us/library/72wdk8cc(v=vs.90).aspx
  4. 使用 元素和加密:我能想到的最后一个选项是简单地将凭据作为正常的 放入 web.config 文件中,然后加密整个 部分。然后,您只需使用以下命令从代码中读取 appSettingsAppSettingsReader 类 http://msdn.microsoft.com/en-us/library/system.configuration.appsettingsreader.aspx。 .NET 允许您开箱即用地加密 web.config 文件的各个部分,并且您可以读取设置,而不会注意到该部分已加密。 .NET 会为您负责解密。更多信息请点击这里:http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AD用户认证 的相关文章

随机推荐

  • 如何在 Maven 2 中的两个测试套件之间切换?

    我们正在使用maven surefire 插件 http maven apache org plugins maven surefire plugin 运行我们的 Java 测试 测试分为两类 快速测试 测试缓慢 整个 快速 套件只需几秒钟
  • 理解和使用复制赋值构造函数

    我试图了解复制赋值构造函数在 C 中的工作原理 我只使用过java 所以我真的对此一无所知 我读过并发现返回参考文献是一个很好的做法 但我不知道应该如何做到这一点 我写了这个小程序来测试这个概念 主要 cpp include
  • 计算文件中的空白行数

    In 计算 bash 中的 非空白 代码行数 https stackoverflow com questions 114814 count non blank lines of code in bash他们解释了如何计算非空行的数量 但是有
  • 调用线程必须是STA

    我正在尝试模拟射弹 并尝试仅在定时事件中创建标签一次 因为它的参数中有一个我需要在定时事件中的对象 但是当我运行它时出现这个线程错误 请帮助 我的代码是 void onTimedEvent Object source ElapsedEven
  • 无法连接到服务器: dial tcp [::1]:8080: connectex: 由于目标机器主动拒绝而无法建立连接

    我正在研究 Azure Kubernetes 我们可以在 Azure 中存储 Docker 映像 我正在尝试检查我的 kubectl 版本 然后我得到 无法连接到服务器 拨打 tcp 1 8080 connectex 否 由于目标机器主动拒
  • 有人有 ERD 符号快速参考吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一页快速参考或备忘单 最好是 PDF 格式 以了解 Crowsfoot Martin 表示法
  • isset() 和 array_key_exists() 有什么区别? [复制]

    这个问题在这里已经有答案了 以下两个函数调用如何比较 isset a key array key exists key a array key exists https www php net manual function array k
  • 如何在 WPF 中使用 XAML 设置 ComboBox 标头

    过去几天我一直试图为我的组合框创建标题 但我似乎找不到方法 到目前为止我发现的所有内容都无法在我的模型中实现 我不得不说我对数据绑定的了解很薄弱 我一直在认真阅读它 我创建了一个组合框并用来自不同数据库的数据填充它 然后 我使用转换器连接相
  • PHP - 将变量传递给类

    我正在尝试学习 OOP 并且我已经完成了这门课 class boo function boo another class some normal variable some normal variable another class gt
  • 将图像对齐到段落 css 的右侧

    我想将图像与段落的右侧对齐 并且我希望能够这样做 而不必在段落上设置固定宽度以及远离图像的一些填充 我怎样才能做到这一点 https jsfiddle net mnakoajk https jsfiddle net mnakoajk box
  • ios9 无法加载资源

    当我在 ios9 中调用我的 api 时遇到此错误 但在 ios8 中工作正常 无法加载资源 因为应用程序传输安全策略需要使用安全连接 ios9 您需要在 plist 中添加一个标志 更多信息请访问https forums develope
  • 使用 MSBuild 进行 ClickOnce 部署 -> 如何传递应用程序版本/或自动增量的当前内部版本号

    我们有一个使用 ClickOnce 部署的 Outlook 加载项 一旦开发人员签入构建 PC 就会对构建进行排队 并将应用程序发布到共享驱动器上的某个位置 问题在于 构建不会将发布版本更改为当前程序集版本 因此它会在先前版本的文件夹中发布
  • Android Google+ 集成 - 重复 UserRecoverableAuthException

    我们已就此事联系了 Google 并且我们正在聊天 https chat stackoverflow com rooms 33772 discussion between lee and arkaaito 该问题似乎已针对设备修复excep
  • DeleteD 会自动取消选择对象吗?

    我是否总是需要调用 SelectObject 将原始对象恢复到 DC 并使我的对象可供删除 即使我无论如何都要删除 DC e g Create DC HBITMAP hBitmap CreateCompatibleBitmap hDC re
  • 安装 R3.3 的 udunits2 软件包

    我只是浪费了一整天的时间试图弄清楚如何安装 udunits2 软件包以便能够安装units 软件包以便能够安装ggforce 和ggraph 软件包 我尝试在 Ubuntu 16 04 和 R gt 3 3 上安装它 因为 ggforce
  • .NET 上 C# 的模拟工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 C NET 新手 但我从事 TDD 已经有一段时间了 我想知道在 C 中编写测试时可用于模拟对象
  • 可执行文件中的函数地址(由 objdump 检查)与 printf 打印的同一函数的地址不匹配。幕后发生了什么?

    我使用的是 Ubuntu 22 04 3 x86 64 系统 我知道虚拟内存和页面一般是如何工作的 我也知道系统可以使用 ASLR 不过我想知道在这个特定场景下 Ubuntu 系统到底会发生什么 我在名为 test c 的文件中有这个小程序
  • 根据缩放级别渲染 QGraphicsScene

    有没有一种 快速 方法可以根据视图缩放级别仅渲染 GraphicsScene 项目的子集 我有一个包含许多网格线的大场景 当缩放更改以避免 网格完全填充场景 效果时 我想隐藏 显示其中一些网格线 网格线是使用QGraphicsScene的a
  • 使用 C++ REST SDK 从文件读取 JSON (卡萨布兰卡)

    我有以下代码 它应该读取文本文件的内容并将其解析为 JSON try string t importFile argv iArgCounter extract filename ifstream t f importFile filestr
  • AD用户认证

    我正在尝试创建一个 ASP NET NET 3 5 网站以通过 Exchange Web 服务连接到我们的 Exchange 2010 服务器 当我定义要进行身份验证的用户名 密码和域时 我能够连接到 EWS 但我想 如果可能的话 不要在我