首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WIF中的主动和被动联邦

WIF中的主动和被动联邦
EN

Stack Overflow用户
提问于 2010-05-06 00:52:51
回答 4查看 15.8K关注 0票数 18

我正在尝试理解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)联合?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-07 17:42:16

主动联盟是关于使用WSTrust协议对用户进行身份验证,而您的依赖方是拥有登录窗口并向STS请求安全令牌的人。被动联合是指依赖方没有登录逻辑,而您被重定向至位于STS上的登录页面。在我看来,Active Federation的配置更为复杂(我使用的是silverlight,所以它需要一些技巧)。我打算在我的博客上发表关于这个话题的文章,因为互联网上关于这个话题的信息很少。

票数 21
EN

Stack Overflow用户

发布于 2012-03-18 07:18:33

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

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

票数 2
EN

Stack Overflow用户

发布于 2013-05-31 20:18:24

你可以在这里阅读更多关于被动声明的内容:

http://garymcallisteronline.blogspot.co.uk/2012/11/claims-explained.html

活动呼叫是对WSActive端点的直接呼叫(这些端点支持多种身份验证类型)。以下代码显示了使用用户名活动端点的活动呼叫。

代码语言:javascript
复制
    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;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2775203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档