问题标签 [identity-delegation]
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.
wcf - ACS 是否支持通过 WS-Trust/ActAs 进行身份委托?
我刚刚开始使用基于声明的安全性,并且有一个与身份委托相关的问题。我设法设置了一个本地虚拟 STS 和几个依赖它进行身份验证的 WCF 服务。Web 应用程序通过 STS 对用户进行身份验证,并代表用户调用服务 A (使用ChannelFactory.CreateChannelActingAs
)。这工作正常。
现在我想使用 Azure 访问控制服务 (ACS) 作为联合提供程序,并使用 Google 帐户(或其他)登录,完全摆脱虚拟 STS。我能够对 Web 应用程序进行身份验证,但在尝试调用 Web 服务时收到“错误请求”响应。
我意识到有很多事情可能是问题所在,但是我还没有真正检查过 ACS 是否支持这个 ActAs 的 WS-Trust 概念。我发现一个论坛帖子表明不支持 ActAs,但它大约有六个月的历史。
谁能确认 ACS 是否支持 ActAs?如果没有,是否有任何其他聪明的方式来实现支持的身份委托?
.net - WCF 委派,服务无法访问 SQL Server
我有以下基础设施:
计算机 #1,Microsoft SQL Server 2008,在系统帐户下启动。有登录
Master\MyLogin
(使用 Windows Authintification),服务器角色 =sysadm
,数据库角色 =db_owner
。计算机#2,IIS 7.0 上的 WCF 服务。应用程序和站点在帐户下运行
Master\IISLogin
(IISLogin@myDomain.ru)
配置:
服务有方法
它首先使用 EF 5.0 数据库。连接字符串
3 号计算机,客户端。它具有以下配置
/li>
频道具有以下凭据
它与数据库错误有关
用户“NT AUTHORITY\Anonymous”登录失败
因此,WCF 委托存在一些问题。当我尝试使用简单的username/password
身份验证时,它工作得很好——所以,证书等等都很好。
我在此指令上执行了第 4 步,但它不起作用。
也许我的代码或配置有问题?我该如何解决?
更新。
试过(没有结果)
[OperationBehavior(Impersonation = ImpersonationOption.Allowed)] => [OperationBehavior(Impersonation = ImpersonationOption.Required)]
试过(没有结果)
在服务方面
ServiceSecurityContext.Current.WindowsIdentity.ImpersonationLevel = 模拟(不是委托!)
当我尝试将 IIS 池的标识从 ApplicationPoolIdentity 更改为 IISLogin@myDomain.ru 时,计算机 3 上的客户端崩溃了。
asp.net-mvc-4 - 将 WebApp 用户(Windows 身份验证)委派给 MVC Web API 失败
我们有一个具有以下站点结构的 IIS 7.5:
WebApp (ASP.NET Forms) = 网站 (http://WebApp)
WebAPI (MVC 4 Web API) = 文件夹转换为应用程序 (http://WebApp/webapi)
两者都在同一个 ApplicationPool 下运行。
两者都具有相同的身份验证设置:
- ASP.NET 模拟(经过身份验证的用户)
- Windows 身份验证(提供者:协商)
两个 web.configs 都定义:
WebApp 使用 HttpClient 从 WebAPI 调用 WebService:
WebAPI 使用 MS 企业库连接到数据库。
当我在本地运行时一切正常,当我在 IIS 7.5 服务器上部署它并开始远程调试时,我在 Web API 中的 HttpContext 当前用户是应用程序池标识,而不是登录到 Web 应用程序的用户。我当然希望它是登录到 WebApp 的用户,因为我想使用基于 AD 帐户(组)的安全性。
请任何人都可以提供一些建议以使其正常工作。提前致谢。
wcf - 如何将 Facebook SecurityToken 委托给 WCF 服务
我有以下组件:WPF 应用程序、身份服务器、WCF Web 服务、
WPF 应用程序使用 WebBrowser 控件通过使用 WS-Federation 的 Thintecture Identity Server 进行身份验证。Identity Server 已启用 Home Realm Discovery 并允许使用 Facebook、Live ID 和 Google 进行身份验证。身份验证后,我收到 ReqquestSecurityTokenResponse 消息,我将其转换为 SecurityToken。
得到这个 SecurityToken 后,我想调用 WebService。我想我需要创建由 Thintecture Identity Server 再次发布的 ActAsToken,但我无法配置它。
但我有例外。
WebService 是使用 Identity and access... VS 扩展配置的。
这种情况可能吗?
wcf - WCF 双跳本地主机在第二跳丢失模拟
我看过很多关于模拟的 WCF 双跳问题的帖子,但没有一个专门帮助我解决我的问题。
我错过了什么?为了在服务 2 上保留我的模拟用户 (DOMAIN\UserName),我还需要做什么?我正在查看 ServiceSecurityContext.Current.WindowsIdentity.Name 以确认 - 也许那是错误的。
设置:
- 托管在 localhost IIS 中的客户端应用程序具有对服务 1 的服务引用 - 模拟 WindowsIdentity (DOMAIN\UserName)
- 服务 1 - 托管在 localhost IIS 中的 WCF 服务,服务引用到服务 2
- 服务 2 - 托管在 localhost IIS 中的 WCF 服务
我正在使用所有 basicHttpBindings 来保持简单。我在两个服务端点上都设置了 SPN。
- 我可以成功地进行双跳并且代码执行得很好
- 在服务 1(跃点 1)中,我的 ServiceSecurityContext.Current.WindowsIdentity 是我模拟的人(DOMAIN\UserName)
- 在服务 2(跃点 2)中,我的 ServiceSecurityContext.Current.WindowsIdentity 是 IIS 应用程序池用户
- ImpersonationLevel = "委托"
- 两个 WCF 服务都启用了 Windows 身份验证并禁用了匿名
** 注意:我在我的开发盒上本地运行这一切。即便如此,我已经将我的授权级别设置为允许我自己授权给我自己。也许矫枉过正。
绑定(两种服务类似):
我在 WCF 服务客户端和服务端点行为配置上都设置了 impersonationLevel = "Delegation"。我的服务方法专门用 impersonationOption="Allowed" (hop 1) 和 impersonationOption"Required" (hop 2) 装饰。
c# - WCF 服务:Web 服务之间的客户端委托人委托
我目前正在开发一个使用多个 WCF-WebServices 的网站。
委托和模拟还不是问题。
现在我有以下情况:
网站 --> WebService1 --> 验证-WebService
我的网站调用 WebService1(这是系统的核心),WebService1 调用我的 Validation-WebService。WebService1 和 Validation-WebService 当前在不同虚拟目录中的同一台机器上运行。服务可能在生产模式下运行在不同的机器上,这就是我想使用委托而不是模拟的原因。两者都在以下上下文中运行:“NT AUTHORITY\NETWORK SERVICE”。
在这两个 WebServices 中,我想识别网站的实际用户,在我的情况下,它当前通过ServiceSecurityContext.Current.WindowsIdentity.Name
.
我能够在第一个 WebService 中获得用户的 WindowsIndentity,但不能在 Validation-WebService 中获得。
如果我需要通过中间 WebService 进行模拟,[OperationBehavior(Impersonation = ImpersonationOption.Required)]
则会遇到异常:
如果我不在 WebService1 中模拟,则连接有效,但 Validation-WebService 中的识别失败。
WebService1 具有以下配置(只是重要部分):
委派已配置并且看起来类似于网站的配置(有效)。
Validation-WebService 的配置(只是重要的部分):
我已经找到了一篇描述完全相同问题的论坛帖子,但这对我不起作用:(这里:找到论坛帖子
有人对这如何工作有建议吗?两天以来我一直在努力解决这个问题,但无法找到解决方案。
如果您需要任何其他信息,请随时询问。
powershell - Kerberos 委派和特定于端口的 SPN
我有一个系统,我在其中使用带有简单委派的 Kerberos,使用集成的 Windows 身份验证将 AD 用户的凭据从网站转发到下游 HTTP REST 服务。所有服务器都是 Windows Server 2012 R2。
这很好用。
当我开始对运行后端 HTTP 服务的同一台服务器进行 Powershell 远程处理时,问题就出现了。 Enter-PSSession
向目标机器上的 WSMan 服务发出 Kerberos 身份验证请求。AD 看到这个请求,并使用我的自定义 HTTP 服务运行的身份加密请求的票证,WSMan 服务显然不能使用,远程处理失败。
我知道可以强制 IE 执行特定于端口的 SPN 请求(通过KB908209),但我无法让第二跳(即 IIS 代理请求)执行特定于端口的请求。我也无法让 powershell 在 5985 上为 WSMan 发出特定于端口的请求。
为了使事情更具体:
- 客户端浏览器向 ServerA 发出请求。浏览器向 AD 发出 HTTP/ServerA 的 Kerberos 票证请求,该请求被授予然后发送到 ServerA。
- ServerA 想要向 发出委托请求
http://ServerB:15200
。 - ServerA 向 AD 请求 SPN HTTP/ServerB 的 Kerberos 票证。它不会请求SPN HTTP/ServerB:15200。我想要它。
如果我将 SPN 设置为 HTTP/ServerB:15200,则 IIS 中的简单委派失败,但 powershell 远程处理有效。如果我将 SPN 设置为 HTTP/ServerB,则简单委派有效,但 powershell 远程处理失败。如果我将 SPN 设置为 HTTP/ServerB:5985,则没有任何效果。
在这一点上我完全被难住了——委托和每个端口的 SPN 似乎不能很好地协同工作?
asp.net - 从远程计算机访问时,Web 应用程序中的模拟失败
我有一个配置为在 NTLM 方案下运行的 Web 应用程序。从 Web 应用程序中,我正在访问应用程序服务器中的服务。我在访问应用程序服务器中的服务的 Web 应用程序代码中模拟用户。当我从 Web 服务器访问 Web 应用程序时,一切正常。但是,当我尝试从具有相同凭据的不同客户端计算机访问 Web 应用程序时,应用程序服务器中的服务调用失败并拒绝访问。同样的场景在不同的机器上工作。我是否缺少任何设置?
c# - 将线程的上下文更改为其他用户
用户触发事件,因此线程在所述用户的上下文中。我遍历所有连接的用户并希望向他们发送此事件,但我想使用经典授权来确定他们是否应该接收该事件。问题是线程主体等在触发事件的用户的上下文中。
我正在研究模拟线程,然后进行授权。我在上面找到了这篇文章
http://msdn.microsoft.com/en-us/library/ff647248.aspx#ImpersonationDelegation5
在ctx = wi.Impersonate();
线程仍在调用用户的上下文中之后,我做错了什么?
更新 我想以其他用户身份运行此代码
我做了一个小博文,涵盖了所需的步骤 http://andersmalmgren.com/2014/06/12/client-server-event-aggregation-with-role-authorization/
asp.net - ASP.NET 模拟提示登录
我有一个启用了 Windows 身份验证的应用程序,它工作正常。有一个调用 Web 服务的新功能,我也想将用户凭据传送到该 Web 服务,所以我启用了模拟,希望委托能够开箱即用,因为我的 Web 应用程序和 Web 服务都是在同一个 Active Directory 下。
但是,当我启用模拟时,浏览器会在访问 Web 应用程序时提示我输入用户名和密码,即使提供有效的密码也无法正常工作。请注意,在没有模拟的情况下,应用会正确选择 Windows 用户。
可能是什么问题?我一直在关注为模拟选择Authenticated User的文档,我认为我没有错过任何步骤。考虑到我的 Windows 身份验证已经在工作,在启用模拟时,什么会导致它停止工作?