标签: wif

WIF身份验证方案.STS实施问题

我们正在考虑使用WIF来验证我们的用户,因此我开始收集一些有关如何以正确方式执行此操作的信息.主要是我们应该如何创建STS.我很难找到有关我们场景的一些信息,我们有一个"主要"服务,将由内部和外部客户使用.

内部客户端将使用TCP连接到服务.我们的员工使用的桌面客户端应使用其域凭据(Active Directory)对服务进行身份验证.除此之外,我们还有少量使用该服务进行数据处理的应用程序.我们想向这些应用程序颁发证书.然后,他们将使用该证书通过STS进行身份验证,并返回包含该应用程序声明的令牌.那可能吗?

外部客户端将通过HTTP连接,使用用户名/密码(Web客户端)进行身份验证,或者通过上面提到的证书进行身份验证.

这是一个有效的场景吗?你会如何在WIF中实现这一点?你能指点一些你认为有帮助的文章吗?我可以通过单个STS(WCF)解决这个问题,还是需要多个STS?单个STS可以处理多种凭证(AD /用户名/证书)吗?

先感谢您.任何帮助都感激不尽.

c# authentication wcf wif

4
推荐指数
1
解决办法
2037
查看次数

Windows Identity Foundation 中的 TrustedIssuers

我一直在使用 ThinkTecture Identity Server 在 Windows Identity Foundation 中试验联合安全和基于声明的身份验证。我在单独的机器上运行 Identity Server,使用在 IIS 中为 SSL 创建的自签名证书并在 Identity Server 中加密令牌。

我正在运行一个本地 MVC 应用程序,通过将标识工具指向 Identity Server 的 FederationMetadata 文件,配置为在 Visual Studio 2013 中使用标识。此配置的一部分包括一个<trustedIssuers>部分,其中包含 Identity Server 证书的指纹。

所有这些都非常简单,但我对客户端上如何使用指纹来信任身份服务器感到困惑。最初,我认为以某种方式直接使用指纹值来验证颁发的令牌,但阅读更多内容后我发现指纹用于查找我机器上的实际证书。但是,据我所知,我从来不需要导出 Identity Server 证书并将其安装在我的客户端计算机上,它就可以正常工作。

如果我自己没有实际安装证书,WIF 如何在这种情况下使用指纹?

c# security certificate claims-based-identity wif

4
推荐指数
1
解决办法
1141
查看次数

使用Thinktecture Identity Server 2进行单点注销

我对Thinktecture的Identity Server 2的理解是没有实现单点登出.换句话说,当您退出一个依赖方时,Identity Server不会自动将用户从任何其他RP中签名.我知道有关于此的帖子,但我还没有找到任何关于如何扩展Identity Server来执行此操作的内容.我已经看到一些帖子说Identity Server已经开箱即用了...如果确实如此,我还是无法找到方法.

我有SSO与Asp.NET Web Forms,WIF和Identity Server 2一起工作得很好,而且我能够很好地退出RP,但从我可以看出,Identity Server中需要一些额外的代码才能将用户从他可能登录的任何其他RP中完全签名.

有没有人扩展Identity Server以实现单点注销?

这是可以在Identity Server中配置还是需要一些编码的东西?

如果你拥有它,我真的很感激.

谢谢.

asp.net wif single-sign-on thinktecture-ident-server

4
推荐指数
1
解决办法
1772
查看次数

使用SAML 2协议的WIF /使用CAS联合AD FS 2.0

我正在尝试使用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联合.那可能吗?网上几乎没有关于这方面的信息.

谢谢 :-)

cas wif single-sign-on adfs2.0

3
推荐指数
1
解决办法
4023
查看次数

ClaimsPrincipal在到达WCF服务时为null

我目前正在使用以下方法实现联合身份验证解决方案:用于发行令牌的被动STS,用于托管Silverlight应用程序的网站以及用于Silverlight应用程序的WCF服务.

到目前为止,我能够:

  • 被重定向到STS
  • 登录并重定向到网站
  • 通过访问在网站上显示声明 HttpContext.Current.User.Identity as IClaimsIdentity;

在网站的web.config上,我添加了所需的两个WIF模块(在IIS 7下)

<modules runAllManagedModulesForAllRequests="true">

        <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler"/>
        <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler"/>

    </modules>
Run Code Online (Sandbox Code Playgroud)

我还配置了web.config的Microsoft.IdentityModel部分,以使用我自己的ClaimsAuthenticationManager和ClaimsAthorizationManager实现.

<service name="Rem.Ria.PatientModule.Web.WebService.PatientService">
        <claimsAuthenticationManager type ="Rem.Infrastructure.WIF.RemClaimsAuthenticationManager"/>
        <claimsAuthorizationManager type ="Rem.Infrastructure.WIF.RemClaimsAuthorizationManager"/>
      </service>
Run Code Online (Sandbox Code Playgroud)

我的ClaimsAuthenticationMAnager只是设置Thread.CurrentPrincipal是一个有效的Principal提供.

class RemClaimsAuthenticationManager : ClaimsAuthenticationManager
    {
        public override IClaimsPrincipal Authenticate ( string resourceName, IClaimsPrincipal incomingPrincipal )
        {

            if ( incomingPrincipal.Identity.IsAuthenticated )
            {
                Thread.CurrentPrincipal = incomingPrincipal;
            }
            return incomingPrincipal;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我的ClaimsAuthorizationManager被调用时,context.Principal.Identity不包含与Claims有效的Identity,Thread.CurrentPrincipal也不包含.

有任何想法吗?

wcf wif

3
推荐指数
1
解决办法
4867
查看次数

大型FedAuth Cookie(FedAuth4)仅有7项索赔

我正在努力弄清楚为什么ClaimsPrincipal只有7个声称FedAuth从FAM 产生5个Cookie(FedAuth1,FedAuth2,FedAuth3,FedAuth4).

这会导致问题,因为Safari正在截断我的cookie并且我的mac用户无法登录.

任何想法,为什么我可能会遇到这个或在哪里我可以想出来?

更新:正如Eugenio指出的设置SaveBootstrapTokens = false将cookie从5回缩到2,现在safari用户可以登录.

federated-identity wif

3
推荐指数
1
解决办法
3403
查看次数

Windows Identity Foundation System.Xml.XmlException:意外的文件结尾

我们的网站上都有一个自定义STS,它们都运行在Windows Azure中.STS是ASP.NET 4.0,站点是MVC3.在过去的几天里,我开始看到我们的诊断日志中出现了以下异常中的一小部分:

System.Xml.XmlException: Unexpected end of file.
   at System.Xml.EncodingStreamWrapper.ProcessBuffer(Byte[] buffer, Int32 offset, Int32 count, Encoding encoding)
   at System.Xml.XmlUTF8TextReader.SetInput(Byte[] buffer, Int32 offset, Int32 count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
   at System.Xml.XmlDictionaryReader.CreateTextReader(Byte[] buffer, Int32 offset, Int32 count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
   at System.Xml.XmlDictionaryReader.CreateTextReader(Byte[] buffer, Int32 offset, Int32 count, XmlDictionaryReaderQuotas quotas)
   at Microsoft.IdentityModel.Web.SessionAuthenticationModule.GetKeyId(Byte[] sessionCookie)
   at Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie(Byte[] sessionCookie)
   at Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken)
   at Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously

我不知道最终用户是否有任何影响,或者可能导致什么问题.如果有人可以对这个例外情况有所了解,以及我将来可能做些什么来防止这种情况,我会很高兴.

c# asp.net asp.net-mvc wif

3
推荐指数
1
解决办法
1728
查看次数

WIF不适用于ASP.NET MVC 4

我有Windows Identity Foundation与MVC 3配合良好.但是,在MVC 4中,似乎WIF没有机会处理未授权的响应并重定向到STS - 而是我被重定向到login.aspx,这是很好的老表格认证.

在MVC 3中,我曾经在web.config中禁用表单auth,但它在MVC 4中不起作用.

我知道MVC 4中的身份验证和授权已经发生了变化,但是我的Google技能似乎已经让我感到厌烦,而且我似乎无法找到如何阻止表单身份验证干扰.有什么指针吗?

asp.net-mvc forms-authentication wif asp.net-mvc-4

3
推荐指数
1
解决办法
1198
查看次数

WIF 4.5本地开发STS没有运行?

我最近用Windows 8 Pro x64和Visual Studio 2012 Ultimate重新保存了我的机器.这通常让我很开心:),除了我在开发过程中因为缺少依赖项或Windows组件而遇到了一些障碍.这个是身份和访问工具(据我所知).

这是我的问题:我创建了一个空白的VS12解决方案,添加了一个ASP.NET MVC 4 Web应用程序,点击F5,一切运行完美.然后,我将项目配置为使用本地开发STS通过闪亮的新向导(所有默认选项),点击F5和...当我被重定向到它时STS无法响应.

初步要求:

GET http://localhost:4826/ HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

来自Web应用程序的响应:

HTTP/1.1 302 Found
Location: http://localhost:12230/wsFederationSTS/Issue?wa=wsignin1.0&wtrealm=http%3a%2f%2flocalhost%3a4826%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252f&wct=2013-01-05T04%3a56%3a13Z
Run Code Online (Sandbox Code Playgroud)

如何对无响应的STS进行故障排除?我甚至不知道它在哪里运行.(这是在WIF 4.5之前拥有自己的STS项目的几个好处之一.:))

编辑(1月5日上午9:45):我尝试在IIS中运行Web应用程序,而不是IIS Express - 但没有成功.我还卸载并重新安装了身份和访问工具,没有运气.

我在网上看到的所有屏幕截图都显示了当你开始调试时LocalSTS服务的通知图标; 我还没有看到这个出现.

我还在添加STS配置之前和之后比较了.csproj文件; 我没有看到任何更改,甚至没有添加项目类型GUID.这让我想知道出现了什么问题; 如果项目文件中没有任何内容指定,WIF工具如何知道启动LocalSTS?有任何想法吗?这种机制应该如何运作?

编辑(1月5日,上午10:33):我安装了声明感知MVC应用程序示例并运行它,并且LocalSTS立即启动.但是在比较了项目文件(.csproj,Web.config等)之后,我发现没有任何有意义的差异可以标记WIF工具为一个项目而不是另一个项目启动LocalSTS.至少现在我知道工具安装正确了.关于我应该在哪里看的任何想法?

wif visual-studio-2012

3
推荐指数
1
解决办法
2633
查看次数

通过WIF共享MVC应用程序之间的身份验证

我有两个网站,即A和B,其中A和B都分别拥有用户存储.如果用户是A的认证用户,则应该能够访问B的所有授权页面,反之亦然.

有人可以帮助我如何使用Windows身份基础来做到这一点.谢谢

c# asp.net asp.net-mvc claims-based-identity wif

3
推荐指数
1
解决办法
832
查看次数