问题标签 [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.
c# - WCF 服务对没有成员资格提供程序的服务功能的授权
我有一个 WCF 服务,它使用 UserNamePasswordValidator 进行身份验证。我检查用户名和密码。如果没问题,那么我允许访问服务调用。
现在我需要一个基于函数的授权,比如PrincipalPermission。但在这种情况下,我没有任何会员提供者。
那么我能为这种情况做些什么呢?
c# - WIF IDP 和 SimpleSamlPHP 作为 SP
我有一个用 WIF 制作的自定义 STS,它作为 IDP 工作,现在我需要将 SSO 配置为用 SimpleSamlPHP 制作的服务提供者。(SP 仅支持 Post Binding 和 Web Browser SSO Profile。)
任何,关于我应该如何处理这个要求的想法?WIF 是否支持 Post Binding 和 SAML 2.0?
任何想法将不胜感激,谢谢!
resharper - WindowsIdentity.GetCurrent() 可以返回 null 吗?
ReSharper 警告我可能NullReferenceException
在
我查看了 MSDN 文档,但没有看到任何提及这一点。此外,这没有任何意义,因为如果您运行可执行文件,则必须登录。
这只是 ReSharper 搜索模式吗?
c# - 如何验证 WindowsIdentity 实例?
我正在尝试在我的 WPF 客户端/服务器 (WCF) 应用程序中使用 Windows Identity Foundation 进行授权,该应用程序可能会或可能不会在与提供身份验证的活动目录相同的信任环境中运行。例如,认证可能由活动目录提供,但应用程序可能在云中运行,并且应用程序的用户配置文件角色/权限将由应用程序数据库提供。
为了完全理解我应该做什么,我觉得我在脑海中遗漏了 WIF 流程的一个基本部分:
- 用户使用 Active Directory 用户名/密码登录 Windows 域
- 用户打开我的应用程序。
- 我引用了登录用户的 WindowsIdentity,现在可以查看他们的登录令牌和所有配置的角色/声明 - 但就像他们可以登录域一样,他们可以登录到自己的机器并且仍然拥有 WindowsIdentity 令牌。
- 我可以将用户的 Windows 身份绑定到他们在我的数据库中的用户配置文件,并授予他们访问我的应用程序中他们的配置文件允许他们访问的特定功能的权限。
我缺少的部分是我有来自 WindowsIdentity.GetCurrent() 的这个 WindowsIdentity 实例......我如何验证是什么产生了这个?即它是本地机器用户还是活动目录用户,如果它是活动目录用户,我怎么知道它是我真正的活动目录服务器?
例如 - 几个场景:
方案 1
- 用户使用与我的活动目录域相同的名称来命名他们的本地计算机
- 用户在该计算机上创建一个本地用户,其用户名与他们知道存在于我的活动目录中的用户相同,该用户对我的应用程序具有完全管理访问权限。
- 他们登录到我的应用程序,并且出于所有密集目的,他们似乎具有相同的用户名,就好像管理用户登录到我的活动目录一样。
在这种情况下,用户有一个本地用户帐户,而不是 Active Directory 帐户,并且它有一个伪造的身份,旨在有目的地绕过应用程序安全性。
我假设有某种方法可以确定这是 Windows 本地用户帐户而不是 Active Directory 用户?我可以使用在 WindowsIdentity 中找到的用户名调用我的用户帐户的活动目录,并比较 SID 以确定这实际上是一个欺骗的用户帐户,并且应该拒绝用户访问。
这是正确的方法吗?有没有什么方法可以从 WindowsIdentity 中看出它是由我的活动目录发出的,并且这个身份没有被篡改?
方案 2
- 用户创建了一个与我的活动目录同名的欺骗活动目录服务器,并创建了一个模拟与场景 1 中描述的本地用户相同的过程的帐户。
现在我有一个具有相同域名和用户名的活动目录用户,我为方案 1 建议的相同解决方案也可以解决此方案的问题,但再次确定此令牌不是由我的活动创建的会很好目录只是通过检查令牌。
有人可以清除我缺少的东西 - 或者我是否缺少任何东西?我是否应该只调用 Active Directory 以验证提供的 WindowsIdentity 是否允许访问我的应用程序?
wpf - WPF、Active Directory 和自定义角色提供程序
我有一个在服务器端使用 WCF 的 WPF 客户端/服务器应用程序。它目前不安全,我希望为我的 Active Directory 上的用户群保护它。应用程序应该托管它自己的角色/权限数据库,该数据库可以通过引用他们的活动目录帐户(SID、SAM 等等)附加到用户的配置文件。
我需要了解一些实施安全性的步骤,然后是我的用户在我的应用程序中拥有的角色/权限:
- 如何让我的 WPF 应用程序只允许我的 Active Directory 授权的身份?如果有人使用某个本地用户帐户登录到他们的本地计算机,他们显然仍然有权运行 WPF 可执行文件 - 那么我如何确保登录确实是 Active Directory 登录,而不是本地登录?app.config 中的配置选项是否与 asp.net web.config 中的配置选项相同,我所做的只是将身份验证设置为 Windows,其余的只是处理?
- 一旦用户被证明是有效的活动目录用户,将用户的 WindowsIdentity 绑定到我的数据库表中的角色的最佳方法是什么?这是使用自定义 RoleProvider 最好的方法吗?
是否有任何好的文档可以帮助连接这些点?由于我读过的所有 WIF 文档和我看过的所有教程,这些是唯一对我没有意义并且似乎没有在任何地方解释的部分。
我知道我需要保护 WCF,但我的理解是这相对简单,就像在 ASP.NET 中一样,它实际上只是正确配置它的问题,其余的就发生了。
c# - How do I get the currently loggedin Windows account from an ASP.NET page?
I have an ASP.NET 3.5 application that uses ASP.NET forms authentication. I want to be able to get the Windows user name currently logged into the computer (NOT logged into the ASP.NET application, but into Windows) when data is edited in a page.
If I use Context.User.Identity.Name.Tostring()
, I get the user name logged into the ASP.NET application, but I need the Windows account name.
Also, it only works when I run the website from Visual Studio, but after deploying to IIS it returns NT AUTHORITY\SYSTEM.
.net - 身份、WIF、SAML 和第 3 方 IdP
我们正在尝试让 Intranet 站点与与我们的内部 AD 联合的第 3 方外部 ID 提供程序 (Okta) 工作。
我们已经设法使用 Ultimate SAML 来解析返回到站点的 SAML 令牌,但正在研究 WIF 和 ThinkTecture.IdentityModel 等其他选项。
我一直在尝试找到一个使用 MVC 4 / .Net 4 对我们的第 3 方 IdP有效的样本。我们为这些东西找到的文档要么不存在,要么极其复杂。
任何人都可以提出一个真正简单的样本,该样本实际上有效并且我的人类可以理解吗?
谢谢
vb.net - Windows 8 中的 LogonUser 函数
多年来,我们一直在一个类中使用这个 VB.NET 代码来测试给定用户是否是管理员(为清楚起见而缩短,删除了错误检查):
此代码为管理员凭据返回 True。此代码适用于 Windows XP、Vista 和 Windows 7。我们知道此代码与打开的 UAC 不兼容。因此,为了让这段代码在 Windows Vista 和 7 中运行,我们关闭了 UAC。然而,在 Windows 8 中,即使关闭 UAC,管理员凭据仍被识别为受限令牌(BuiltInRole.User 的一部分)。所以我们不能用“identity.Impersonate”来冒充管理员。
任何想法为什么此代码在 Windows 8 上被破坏?
谢谢亚历克斯
single-sign-on - 重用 ClaimsPrincipal 对在线共享点进行身份验证
我有一个 Office 365 帐户(使用最新的 SharePoint 2013 实例)
我还有一个针对 Office 365 进行身份验证的简单 .net Web 应用程序,我创建了一个 AppPrincipalId 并使用 New-MsolServicePrincipal powershell 命令添加了它。
这可以正常工作。我启动应用程序(在调试中),它重定向到 365 登录,我登录,它返回到应用程序,我从 ClaimsAuthenticationManager 派生了一个类并覆盖了 Authenticate 方法。
我现在可以看到 ClaimsPrincipal 以及相关的声明和身份等。
现在我想重新使用此标识以编程方式访问 SharePoint。
我的问题:
a) SharePoint 是否允许此身份(看到它是由 sts.windows.net 颁发的)
b)如何重建有效的 JWT(或使用现有的 JWT),并使用身份验证承载将其封装在 HttpRequest 中。
我正在使用的代码如下 - 这是返回 401 未授权。
任何帮助将不胜感激。
asp.net - 为什么打开模拟时 Thread.CurrentPrincipal.Identity 和 WindowsIdentity.GetCurrent() 不同?
我启用了模拟和 Windows 身份验证。
但Thread.CurrentPrincipal.Identity.Name
返回经过身份验证的用户的名称并WindowsIdentity.GetCurrent()
返回模拟身份。
这些身份不应该是一样的吗?
在这种情况下,代码在哪些凭据下运行?