我正在尝试理解WIF中主动和被动联盟之间的区别。如果依赖方( RP )是WCF服务而不是ASP.NET应用程序,则似乎将使用主动联盟;如果RP是ASP.NET应用程序,则将使用被动联盟。这是准确的吗?
因此,在ASP.NET应用程序在后端使用WCF的情况下,MS文章建议使用由ASP.NET应用程序使用ActAs STS获得的'bootstrap‘安全令牌,该令牌用于向WCF进行身份验证。在此场景中,我们似乎正在进行主动(user -> STS -> ASP.NET RP)和被动(ASP.NET -> ActAs STS -> WCF)联合?
发布于 2010-05-07 17:42:16
主动联盟是关于使用WSTrust协议对用户进行身份验证,而您的依赖方是拥有登录窗口并向STS请求安全令牌的人。被动联合是指依赖方没有登录逻辑,而您被重定向至位于STS上的登录页面。在我看来,Active Federation的配置更为复杂(我使用的是silverlight,所以它需要一些技巧)。我打算在我的博客上发表关于这个话题的文章,因为互联网上关于这个话题的信息很少。
发布于 2012-03-18 07:18:33
简而言之,被动联合只是一个短语,用于表示浏览器被重定向到STS托管的登录页面的场景。登录后,STS会使用一些cookie或其他东西将您重定向回引用URL,并且您将在信任STS的站点进行身份验证(使用指纹、证书、加密等)。
你也不需要这样做。例如,我希望我的ASP.NET站点使用用户提供的凭据主动联系STS,但这意味着ASP.NET应用程序池必须使用Windows Auth在STS进行身份验证,以便发送用户提供的凭据来获取令牌,然后我显式地将该令牌添加到会话中。换句话说,我没有使用被动联合,但这只是一个选择。
发布于 2013-05-31 20:18:24
你可以在这里阅读更多关于被动声明的内容:
http://garymcallisteronline.blogspot.co.uk/2012/11/claims-explained.html
活动呼叫是对WSActive端点的直接呼叫(这些端点支持多种身份验证类型)。以下代码显示了使用用户名活动端点的活动呼叫。
private static GenericXmlSecurityToken GetToken(string username, string password, string url, string audienceUrl)
{
var factory = new WSTrustChannelFactory(new Microsoft.IdentityModel.Protocols.WSTrust.Bindings.UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential), new EndpointAddress(url));
factory.Credentials.UserName.UserName = username;
factory.Credentials.UserName.Password = password;
factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
factory.TrustVersion = TrustVersion.WSTrust13;
WSTrustChannel channel = null;
var rst = new RequestSecurityToken
{
RequestType = WSTrust13Constants.RequestTypes.Issue,
AppliesTo = new EndpointAddress(audienceUrl),
KeyType = WSTrust13Constants.KeyTypes.Bearer,
};
channel = (WSTrustChannel)factory.CreateChannel();
return channel.Issue(rst) as GenericXmlSecurityToken;
}https://stackoverflow.com/questions/2775203
复制相似问题