问题标签 [wif]
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.
security - 如何在使用 SAML 安全令牌的同一应用程序中生成它?
我一直在配置我的一些应用程序以使用 Windows Identity Foundation。我使用被动重定向从安全令牌服务获取安全令牌。我通过将 WIF 代码插入到我开始使用 WIF 之前存在的登录网站中,然后在应用程序中使用“添加 STS 引用”来完成此操作。
但是,我有一个不使用登录网站的应用程序。我认为我想做的是在应用程序本身内生成安全令牌,而不将用户重定向到外部 STS。
我尝试使用 ClaimsAuthenticationManager 类来完成此操作,但未成功,该类可用于向从外部 STS 接收的安全令牌添加额外的声明。但是,ClaimsAuthenticationManager 在这种情况下不起作用。不是每个会话仅调用一次 ClaimsAuthenticationManager (预期和期望的结果),而是在每次页面加载时调用它,而没有我在前一页面加载时分配给用户的声明的迹象。
我正在考虑创建一个外部 STS,它将为用户提供来自数据库的声明,但我认为这是一种危险。似乎没有理由我必须只为一个网站创建一个完全独立的 STS。我只想在我的应用程序中生成安全令牌。
silverlight - WCF路由服务+WIF安全+SL=grief
设想:
我有一个托管 silverlight 应用程序的网络应用程序。Silverlight 正在使用 Web 应用程序调用 wcf 服务。我还混合了用于联合身份验证的 WIF,因此 Web 应用程序所做的第一件事就是将 STS 重定向到登录。成功登录后,您将获得一个包含在 http cookie 中并发送到浏览器的令牌。
所有 wcf 服务都隐藏在 wcf 4 路由服务之后,该服务根据一些预定义的过滤器将请求路由到适当的服务。Silverlight 使用路由服务(使用 httpBinding)与服务对话。
我想要做的是将原始身份(包含在 http cookie 中)传递到内部 wcf 服务。
我知道这是一个广泛的主题,但如果有人可以提供任何输入,将不胜感激。
更新:我已经与 WIF 合作了一段时间,并弄清楚了这一点。我基本上是从主网站获取 xml 令牌,然后在调用服务之前将其包含在 SOAP 标头中。
iis - WIF RTM 出现奇怪错误,在重置 IIS 后发生
我在带有 IIS 7.5 的 Windows Server 2008 上托管我的 Web 应用程序,我有 2 个 Web 应用程序: 1. 第一个是带有登录页面的核心 sso(单点登录)服务。2. 另一个 Web 应用程序托管在使用第一个应用程序进行 sso 的同一 Web 服务器上。
我正在使用 WIF RTM 来实现 sso,
通常,它运行良好,没有任何问题,用户可以登录并抛出 sso 并重定向回起始页面。但是当我登录时先抛出 sso,然后重新启动 IIS,如果我回到第二个应用程序并刷新页面,则会出现以下错误:
“/”应用程序中的服务器错误。密钥在指定状态下无效。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Security.Cryptography.CryptographicException:密钥在指定状态下无效。
源错误:在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[CryptographicException:密钥在指定状态下无效。]
System.Security.Cryptography.ProtectedData.Unprotect(Byte[] encryptedData, Byte[] optionalEntropy, DataProtectionScope 范围) +425
Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode(Byte[] 编码) +59[InvalidOperationException:ID1073:尝试使用 ProtectedData API 解密 cookie 时发生 CryptographicException(有关详细信息,请参阅内部异常)。如果您使用的是 IIS 7.5,这可能是由于应用程序池上的 loadUserProfile 设置设置为 false。] Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode(Byte[] 编码) +151
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(Byte[] cookie, Boolean outbound) +109
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(XmlReader reader , SecurityTokenResolver tokenResolver) +634
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(Byte[] token, SecurityTokenResolver tokenResolver) +105
Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie(Byte[] sessionCookie) +239
Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken) +59
Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs) +52
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75________________________________________ 版本信息:Microsoft .NET Framework 版本:2.0.50727.4927;ASP.NET 版本:2.0.50727.4927
用户会话是使用 SQLServer 会话模式存储的,我为此使用了一个特殊的数据库。
我已经尝试了很多,我无法在我的本地计算机(Windows7)上重新处理这个问题。有没有人有类似的经历?你能告诉我如何解决这个问题吗?
.net - SAAS/Cloud Web 应用程序和桌面应用程序之间的共享身份验证
一个简单的场景:
假设我们在云中有一个 Web 应用程序,允许用户使用 OpenID 进行注册。(我愿意使用 Windows Live ID 作为替代)他们可以登录并更新一些元数据,例如他们最喜欢的颜色是什么。
如果我现在想从桌面客户端获取此信息,我该怎么做?我可能必须公开一个 Web 服务才能查询这些信息,但是身份验证如何呢?
有DotNetOpenAuth和Windows Identity Foundation,我们有 CardSpace 等。
但是我该从哪里开始呢?我需要哪一个?我需要全部 3 个吗?
那么 STS 呢,有没有用于 OpenID / Windows Live ID 的?
有没有人看到使用这些技术的样本可以满足我的要求?任何指针?
mono - 在 UNIX/Mono 上使用 WIF 的 SSO
我们已经使用 Windows Identity Foundation (WIF) 在 .NET Web 应用程序中实现了 SSO。它工作得很好。但是,我们必须在使用 Mono 的 UNIX 系统上运行它。那可能吗?
single-sign-on - WIF 使用 SAML 2 协议/联合 AD FS 2.0 和 CAS
我现在正在尝试使用 WIF 和 AD FS 2.0 实现具有基于声明的身份的 Web SSO。现在我有一个现有的 ASP.Net 应用程序,它将身份验证委托给 AD FS 2.0 服务器并信任颁发的安全令牌。这工作得很好。
但是,在该组织中有一个支持 SAML 2 协议的现有 JA-SIG 中央身份验证服务 (CAS) 服务器。我想用现有的 CAS 服务替换 AD FS 2.0。
据我了解,WIF 使用 WS-Federation,它就像一个围绕 SAML 令牌的容器。是否可以使用普通的 SAML 2 协议及其绑定(重定向或 POST)?如果这是不可能的(我猜),第二种选择可能是使用联合身份并将 AD FS 2.0 与 CAS 联合。那可能吗?网络上几乎没有关于这方面的信息。
谢谢 :-)
wcf - wsFederationHttpBinding over net.tcp
我有使用 net.tcp 绑定的服务(流和缓冲端点)。我想在这些服务中添加 WIF 联合安全性,同时继续使用 net.tcp 绑定。我试图创建自定义绑定,但到目前为止一直没有成功。下面是我正在尝试的一般架构。我正在寻找正确的绑定配置来完成这项工作。
- 客户端 - WPF 应用程序
- 依赖方 - 带有 net.tcp 端点的 WCF 服务
- STS - 带有 http(s) 端点的 WCF 服务
c# - 如何将 SAML XML 令牌字符串转换为 SecurityToken 或 ClaimsPrincipal 实例?
我的背景:
- .Net RESTful 网络服务
- 客户端(混合平台、技术、库功能)已获得 SAML 令牌
- 尝试接受令牌以在 REST 服务中进行身份验证/授权
- 在 HTTP Authorization / X-Authorization 标头中
- 作为查询参数
- 稍后还将支持 SWT,但需要获取 SAML 令牌
细节:
我在字符串中有一个 SAML 令牌:
在 HttpModule 中,我想将其转换为 ClaimsPrincipal 以便我的服务可以将通常的 Thread.CurrentPrincipal 用作 IClaimsPrincipal 的东西。
我发现了几个诱人的页面/博客/等...看起来很有帮助:
我一直试图将 SAML 令牌转换为 ClaimsPrincipal (通过 SecurityToken 中间步骤或直接......无论哪种方式都很高兴)。Cibrax 想法的示例代码将以下内容用于关键的验证和反序列化步骤:
我遇到的障碍是 WIF 的 RTM 版本没有公开 GetSecurityToken 的这种重载......它只公开:
感谢您帮助我摆脱困境!
泰勒
c# - Windows Identity Foundation 的视频教程
是否有针对 Windows Identity Foundation 的一系列网络广播。我似乎没有找到任何关于 WIF 的深入讨论。
asp.net-mvc - ASP.NET MVC 2 和使用 WIF (Windows Identity Foundation) 的身份验证
是否有以下可用的体面示例:
查看WIF SDK,有一些将 WIF 与 ASP.NET 结合使用的示例,使用WSFederationAuthenticationModule (FAM)
ASP.NET 网站在用户用来进行身份验证的安全令牌服务 (STS) 之上的瘦皮肤(通过提供用户名)和密码)。
如果我正确理解 WIF 和基于声明的访问,我希望我的应用程序提供自己的登录屏幕,用户在其中提供用户名和密码,并让这个委托给 STS 进行身份验证,通过安全标准将登录详细信息发送到端点(WS-*),并期望返回 SAML 令牌。理想情况下,SessionAuthenticationModule
将按照示例FAM
与 SessionAuthenticationModule
ie 一起使用,即负责IClaimsPrincipal
从会话安全分块 cookie 重建并在安全会话到期时重定向到我的应用程序登录页面。
我所描述的是否可以使用FAM
并SessionAuthenticationModule
使用适当的 web.config 设置,还是我需要考虑自己编写一个HttpModule
来处理这个问题?或者,是否重定向到用户在被动请求者场景中登录事实上的方法的瘦网站 STS?