WIF中的主动和被动联合会

时间:2010-05-05 16:52:51

标签: wif

我试图理解WIF中主动和被动联合之间的区别。如果依赖方(RP)是WCF服务而不是ASP.NET应用程序,则可以使用活动联合,如果RP是ASP.NET应用程序,则可以使用被动联合。这准确吗?

因此,在ASP.NET应用程序在后端使用WCF的情况下,MS文章建议使用ASP.NET应用程序使用ActAs STS获取的“bootstrap”安全令牌,此令牌是用于通过WCF进行身份验证。在这种情况下,我们似乎正在组合Active(用户 - > STS - > ASP.NET RP)和Passive(ASP.NET - > ActAs STS - > WCF)联合?

4 个答案:

答案 0 :(得分:21)

Active Federation是关于使用WSTrust协议对用户进行身份验证,您的依赖方是谁拥有登录窗口并向STS请求安全令牌。 被动联盟是指依赖方没有登录逻辑,您被重定向到位于STS的登录页面。在我看来,Active Federation配置起来比较复杂(我正在使用Silverlight,所以它需要一些技巧)。我计划在我的博客上发布关于这个主题的内容,因为在互联网上几乎没有关于它的信息。

答案 1 :(得分:1)

简而言之,Passive Federation只是一个用于表示浏览器重定向到STS托管的登录页面的场景的短语。登录后,STS会使用某些cookie或某些内容将您重定向回引用URL,并且您在信任STS的站点上进行身份验证(使用指纹,证书,加密等)。

你也不必这样做。例如,我喜欢我的ASP.NET站点使用用户提供的凭据主动联系STS,但这意味着ASP.NET应用程序池必须使用Windows身份验证在STS进行身份验证,以便将用户提供的凭据发送到获取一个令牌,然后我明确地将令牌添加到会话中。换句话说,我没有使用Passive Federation,但这只是一个选择。

答案 2 :(得分:1)

您可以在此处详细了解被动声明:

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;
    }

答案 3 :(得分:0)

即使我最初遇到同样的问题,但blog给了我很多帮助。

我建议您首先浏览samples,然后分析文档。

但是,WCF联合会很棘手。