问题标签 [windows-identity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3415 浏览

asp.net - Windows Identity Foundation:如何在 ASP.net 中获取新的安全令牌

我正在编写一个使用 Windows Identity Foundation 的 ASP.net 应用程序。我的 ASP.net 应用程序使用基于声明的身份验证和被动重定向到安全令牌服务。这意味着当用户访问应用程序时,他们会自动重定向到安全令牌服务,在那里他们会收到一个安全令牌,用于向应用程序标识他们。

在 ASP.net 中,安全令牌存储为 cookie。

我希望用户可以在我的应用程序中单击某些内容,以删除 cookie 并将它们重定向到安全令牌服务以获取新令牌。简而言之,让注销和以其他用户身份登录变得容易。我尝试在代码中删除包含令牌的 cookie,但它以某种方式持续存在。

如何删除令牌,以便用户可以再次登录并获取新令牌?

0 投票
2 回答
3906 浏览

c# - 列出用户具有读取权限的文件 (ASP.NET)

我想列出用户具有读取权限的文件夹中的所有文件。用户访问该网站并可以对网站的某些方面使用表单身份验证(例如添加链接等),但我想使用他们的 Windows 凭据列出给定文件夹中的文件(因为我关闭了匿名访问),隐藏那些他们无法阅读。

但是,在使用时Directory.GetFiles,它还包括无法读取的文件(尽管可以读取元数据(文件大小、创建日期等))。

这就是我所拥有的:

当我访问该页面时,我UnauthorizedAccessException一使用就会得到GetAccessControl,即使它应该使用当前的用户凭据。using由于 asp.net 帐户无权访问该文件夹,因此关闭失败。当FileSecurity被注释掉时,它会列出所有文件。

堆栈跟踪:

关于如何做到这一点的任何想法,而无需尝试打开每个文件并捕获发生的异常?

0 投票
1 回答
1185 浏览

security - 如何在使用 SAML 安全令牌的同一应用程序中生成它?

我一直在配置我的一些应用程序以使用 Windows Identity Foundation。我使用被动重定向从安全令牌服务获取安全令牌。我通过将 WIF 代码插入到我开始使用 WIF 之前存在的登录网站中,然后在应用程序中使用“添加 STS 引用”来完成此操作。

但是,我有一个不使用登录网站的应用程序。我认为我想做的是在应用程序本身内生成安全令牌,而不将用户重定向到外部 STS。

我尝试使用 ClaimsAuthenticationManager 类来完成此操作,但未成功,该类可用于向从外部 STS 接收的安全令牌添加额外的声明。但是,ClaimsAuthenticationManager 在这种情况下不起作用。不是每个会话仅调用一次 ClaimsAuthenticationManager (预期和期望的结果),而是在每次页面加载时调用它,而没有我在前一页面加载时分配给用户的声明的迹象。

我正在考虑创建一个外部 STS,它将为用户提供来自数据库的声明,但我认为这是一种危险。似乎没有理由我必须只为一个网站创建一个完全独立的 STS。我只想在我的应用程序中生成安全令牌。

0 投票
2 回答
6055 浏览

c# - 如何冒充其他用户?

我正在开发一个 ASP.net 应用程序,我正在尝试模拟用户

我正在创建一个带有令牌的 windowsIdentity

这个令牌是通过调用非托管代码获得的

有没有其他方法可以在不使用此 advapi32.dll 非托管代码的情况下获取令牌?

tks

0 投票
2 回答
5058 浏览

c# - 在使用表单身份验证登录时使用 WindowsIdentity 获取 ASP.NET 中的文件/目录列表

编辑 7:
我猜这毕竟不能完成,可能需要使用某种命令行应用程序来执行此操作并解析输出,尽管我预计当很多人访问时这可能会很慢文件夹和/或达到 NetBIOS 会话限制。

编辑 6:
使用 Windows 集成身份验证(使用有权访问共享和数据库的帐户),我可以获得文件/目录列表。但是,刷新页面并获得一个UnauthorizedAccessException. 可能是 NetBIOS 或 ActiveDirectory 限制。

5 个月了,除了“使用模拟”(似乎是通过 P/Invoke,因为内置的 .NET 方式似乎很不稳定)之外,仍然没有解决方案,但这也会有同样的问题。硬编码用户名/密码不是一种选择。

开发(Windows 7)框(使用 IIS 或 Visual Studio 的)内置 Web 服务器)工作正常..

编辑 5:
根据我在互联网上和这个问题中所读到的内容,唯一可行的方法是:

  • 基本认证
  • 冒充
  • 将文件与 Web 应用程序放在同一台服务器上

这些都不是一个选项

  • 用户每次都必须登录 - 缺点:额外的进入障碍,应该是无缝体验
  • 用户名和密码硬编码 - 缺点:密码更改,用户编码(asp.net 帐户)将无法访问文件
  • Web 服务器上要存储的文件太多,磁盘空间不足

由于必须有可以访问 UNC 共享文件的 Windows 窗体应用程序,我原以为这会起作用。那,以及当远程连接到 Web 服务器并使用 Windows 资源管理器时,我可以访问这些文件的事实。

也许 ASP.NET/IIS 安全性会阻止它在没有通过 P/Invoke 模拟的情况下工作。或者可能被防火墙阻止?

编辑 4:
确实有效的一件事是使用基本身份验证 - 集成 Windows 身份验证和摘要式身份验证没有。但是,这并不是一个真正的选择,因为密码是以明文形式发送的,并且用户在访问页面时会得到提示(这不是我想做的事情)。

编辑 3:
无论我尝试什么,我都无法获得 UNC 路径上的文件或目录列表(这些的组合和单独打开)

  1. 给予“每个人”对该文件夹的完全访问权限(不仅仅是读取)
  2. 给定 ASP.NET 帐户“作为操作系统的一部分”
  3. 给定 IIS_WPG 组“作为操作系统的一部分”
  4. 用过的<authentication mode="Windows" />
  5. 用过的<identity impersonate="true"/>

如果我使用与登录站点相同的帐户远程连接(使用 RDP)到服务器,则可以正常访问文件。它只是不能通过代码工作。

编辑2:
我尝试过的是:

  1. 打开 Windows 身份验证:文件只能在同一台机器上访问(不是 UNC 共享),无法连接到数据库
  2. 打开表单验证,可以连接到数据库但不能访问文件(由于InvalidCastException身份现在是一个GenericIdentity

我无法使用 Windows 身份验证,因为我无法添加角色。我不想提示输入用户名/密码,因为这是一个额外的步骤,而且它不是通过安全连接(即 SSL)。此外,我不能让 ASP.NET 帐户访问这些文件(因为我不是域管理员)。

编辑:
路径是 UNC 路径,不在本地 PC 上。

使用表单身份验证,当我尝试在 Visual Studio 中将当前用户身份转换为 aWindowsIdentity并进行调试时,我得到一个InvalidCastException. 我只是有:

然后我得到的错误是:

我正在使用模拟来获取文件列表,因为 ASP.NET 帐户无权访问这些文件。它在使用 IIS 时有效,但在 Visual Studio 中无效:

添加<identity impersonate="true" />web.config不会做任何事情 - 虽然我不想这样做,因为我使用 ASP.NET 帐户来查询数据库,用户没有访问权限(导致Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON')。

当我通过 web.config 打开 Windows 身份验证时,我会UnauthorizedAccessException尝试从远程共享中获取文件列表(如果我以客户端 PC 上的同一用户身份远程连接到 IIS 框,我可以访问该文件列表)。

此外,ASP.NET 帐户是在 Active Directory 中设置的帐户,而不是 IIS 本地帐户。

0 投票
1 回答
808 浏览

asp.net - 使用集成的 Windows 身份验证和 asp.net,用户更改密码并提示再次登录。为什么?

我正在开发一个使用 Windows 身份验证的应用程序。在这个应用程序中,我们让用户能够更改他们的密码。

用户可以更改密码就好了。但是,在他们更改密码后,事情就变得奇怪了。

有时他们可以很好地浏览应用程序。其他时候,他们单击链接并立即被提示提供凭据。有时他们可以单击链接,但在第二次单击时会提示他们提供凭据。

浏览器是否保留原始凭据的令牌并在请求下一页时使用它?如果是这种情况,为什么有时我可以继续使用该网站?我可以更改密码,然后将该令牌分配给请求吗?

有人有建议吗?

0 投票
2 回答
301 浏览

.net - 如何在不引发异常的情况下管理 Windows 识别基础中的访问?

在 Windows Identity Foundation (WIF) 中,有一个名为ClaimsPrincipalPermission. MSDN 上的文档非常稀少。它指出:

ClaimsPrincipalPermission 表示访问资源所需的权限。ClaimsPrincipalPermission 接受一个表示要访问的资源的字符串和一个表示要对资源执行的操作的字符串。调用 Demand 时,principal 必须具有对指定资源执行指定操作的权限,否则 Demand 会抛出异常。

这很酷。它允许我在函数上设置属性并使其只有授权用户才能调用该函数。我可以毫不费力地使用此功能。

但是,还有另一个问题。我正在开发一个具有许多功能的 Web 应用程序,这些功能只允许某些用户访问。我希望将我的页面编码为仅显示具有登录用户可以访问的功能的页面的链接。

我看到使用 ClaimsPrincipalPermission 执行此操作的唯一方法是执行以下操作:

我的主管向我明确表示,这种“异常编码”是不可接受的。我确信我可以将这类东西封装在一个小型库中,但我想知道 WIF 打算如何用于此目的。

顺便说一句,我知道 WIF 允许我自动检查对特定网页的访问,但该项目的架构师希望指定要限制的函数名称,而不是网页 URL。

最好的办法是什么?

更新

到目前为止,我发现的最好的事情是通过异常封装编程以减轻后果......

0 投票
6 回答
30999 浏览

delphi - 注册表 ReadString 方法在 Delphi 7 中的 Windows 7 中不起作用

以下代码示例以前用于返回我的 windows id,但现在它不起作用,并返回空字符串,不知道为什么。

有人可以帮忙吗?

0 投票
1 回答
1413 浏览

c# - NServiceBus - 如何配置总线以允许 WindowsIdentity 从客户端流出

在客户端上,我已经设置了总线ImpersonateSender(true)

我的服务器已配置AsA_Server,默认情况下应该有ImpersonateSender(true)

我现在正在尝试从处理程序内部检索 WindowsIdentity

但这给了我空值。

我究竟做错了什么?

0 投票
2 回答
1430 浏览

.net - 联邦身份验证令牌保存在哪里 [WIF STS]?

当我开始探索 WIF 时,我对以下几点有疑问:

在 Windows 标识基础 [WIF] 中,查看安全令牌服务 [STS],我想知道联合身份验证令牌保存在哪里?

我认为它在浏览器 cookie 中,如果是这样,任何人都可以给我一个关于它的见解吗?