在 Office 网络上将 AZROLESLib 与 C# 结合使用

using AZROLESLib with C# on Office Network

我正在将一些旧的 Web 服务转换为 Web API,这包括一个从 AzMan 获取信息的 AZROLESLib 实用程序。当我拨打以下电话时:

_applicationStore.Initialize(0, authorizationStore, null);

我收到以下异常:

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

以前的版本使用以下方法来解决这个问题:

Service.Credentials = System.Net.CredentialCache.DefaultCredentials;

我需要做什么才能访问授权存储?我在网络位置和本地 PC 上都试过了,两者都有相同的授权问题。我在公司提供的网络安全的办公网络中,因此对文件的访问仅限于用户。我相信这是在尝试以 IIS 用户身份执行任务,而不是使用我的用户。有什么方法可以确保它将使用当前用户的凭据而不是 IIS APPPOOL\ASP.NET v4.0

来调用它

编辑

我可以在 html 页面和 javascript 调用网络 API 的上下文中使用它,所以当我从另一个网络调用它时就会出现问题应用程序(也使用 Windows 身份验证)。显然,其他 Web 应用程序在从 Web API.

调用函数时使用应用程序池凭据而不是当前用户的登录凭据

它在第二个 Web 应用程序中不起作用,因为您正试图通过网络两次使用模拟上下文。这就是众所周知的 "double hop" 问题。在这里阅读更多内容:

http://blogs.msdn.com/b/besidethepoint/archive/2010/05/09/double-hop-authentication-why-ntlm-fails-and-kerberos-works.aspx

简而言之,如果您使用 NTLM(windows 集成身份验证)从 A 向 B 进行身份验证,则 B 无法 "reuse" 将身份验证令牌连接到点 C。