gpt4 book ai didi

asp.net - AD用户认证

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

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

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

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

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

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

When making a request as an account that does not have a mailbox, you must specify the mailbox primary SMTP address for any distinguished folder Ids.



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

Unable to cast object of type 'System.Net.SystemNetworkCredential' to type 'Microsoft.Exchange.WebServices.Data.ExchangeCredentials'.



如前所述,唯一有效的是通过硬编码用户登录详细信息来定义要进行身份验证的用户凭据,我宁愿不这样做: svc.Credentials = New WebCredentials("username","password","domain")
是否有人能够使用 ASP.NET 网站中当前登录用户的凭据对 EWS 进行身份验证?

最佳答案

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

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

  • 使用 Kerberos:启用 Kerberos 后,可以在使用 Windows 身份验证时在服务器之间委派用户凭据。我不知道如何设置 Kerberos 的确切细节,因为我只是一个不起眼的开发人员,但也许您的系统管理员可以帮助您。 AFAIK,您需要设置您的 ASP.NET 服务器以允许用户委派。
  • 设置 IIS 应用程序池的用户标识:如果 Kerberos 不是一个选项,您可以更改运行 ASP.NET 站点的应用程序池的标识。首先在 IIS 管理器中定义一个新的应用程序池。然后转到该应用程序池的“高级设置”对话框,并将身份设置为允许访问您的 Exchange 服务器的域用户。有关应用程序池标识的更多信息,请访问:http://technet.microsoft.com/en-us/library/cc771170(v=WS.10).aspx .
  • 设置 元素: 如果由于某种原因无法更改应用程序池,则可以尝试使用 web.config 文件中的 元素模拟 ASP.NET 网站。 ASP.NET 为您提供了将凭据存储在注册表中的选项,这样您就不必将它们直接放在 web.config 文件中。更多信息在这里: http://msdn.microsoft.com/en-us/library/72wdk8cc(v=vs.90).aspx
  • 使用 元素和加密: 我能想到的最后一个选项是简单地将凭据放在您的 web.config 文件中作为正常的 ,然后加密整个 部分。然后,您只需使用 the AppSettingsReader class 从您的代码中读取 appSettings . .NET 允许您开箱即用地加密 web.config 文件的部分,您可以读取设置而不会注意到该部分已加密。 .NET 负责为您解密。更多信息在这里: http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx
  • 关于asp.net - AD用户认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12851705/

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