当前位置: 首页 > 知识库问答 >
问题:

使用SAML的SSO桌面客户端应用程序

谯志诚
2023-03-14

我需要编写一个基于桌面的客户端应用程序,它在进行基于SAML的SSO身份验证后对SharePoint服务器进行一些Web服务方法调用。

我发现SAML SSO主要用于处理所有细节的浏览器。根据这个问题,SAML 2.0中似乎有一种技术称为ECP,专门用于启用非基于浏览器的客户端。

然而,SharePoint 2010/2013等一些应用程序仅支持SAML 1.1;在这种情况下可以使用什么?

共有1个答案

闾丘选
2023-03-14

你没有提到技术——我可以分享我的经验。我们需要在使用WCF服务的桌面应用程序(WPF)中有一个SSO。我从这个链接开始提供信息。解决方案是使用WIF从身份提供者那里检索SAML令牌,并使用它来建立与我们后端服务器的连接。

>

  • 获取令牌

    WSTrustChannelFactory GetTrustFactory()
    {
        var binding = new WS2007HttpBinding(TrustChannelBindingConfiguration);
        return new WSTrustChannelFactory(binding, StServiceUri);
    }
    
    SecurityToken GetTokenFromSts()
    {
        using (var trustFactory = GetTrustFactory())
        {
            // here is the code to set trustFactory.Credentials
            trustFactory.TrustVersion = TrustVersion.WSTrust13;
            var rst = new RequestSecurityToken
                      {
                          RequestType = RequestTypes.Issue,
                          AppliesTo = new EndpointReference(YourServiceUri),
                          KeyType = KeyTypes.Bearer
                      };
    
            var channel = (WSTrustChannel) trustFactory.CreateChannel();
            try
            {
                return channel.Issue(rst);
            }
            catch (MessageSecurityException msex)
            {
                channel.Abort();
                throw new EMException(msex.InnerException.Message, msex);
            }
        }
    }
    

    然后将获得的令牌用于服务调用:

    securityToken = GetToken();
    
        // 2. Create a channel with issued token to YourServiceInterface
        // create binding and turn off sessions
        var binding = new WS2007FederationHttpBinding(FederationBinding);
    
        try
        {
            var factory = new ChannelFactory<YourServiceInterface>(binding,
                              new EndpointAddress(YourServiceUri));
    
            factory.Credentials.SupportInteractive = false;
    
            var channel = factory.CreateChannelWithIssuedToken(securityToken);
    
            // 3. Call YourMethod() on secured channel
            return channel.YourMethod();
    }
    catch {...}
    

    链接的主要方法并没有真正改变——我们只是添加了令牌缓存并将此代码合并到我们的通道处理框架中。该代码用于针对ADFS服务器对桌面客户端进行身份验证,并使用我们后端服务器中的声明进行授权。

  •  类似资料:
    • 在本文中你将了解到如何在互联网上访问家里Windows 7电脑 前提 正常使用蜻蜓映射内网穿透软件需要以下步骤: 注册帐号 下载Windows客户端 场景 内网有一台服务器A的地址为: 192.168.1.100, 蜻蜓映射内网穿透通过以下步骤实现在互联网上远程访问服务器A 1. 在服务器A上安装客户端 进入蜻蜓映射下载页面,点击"免费下载"按钮,下载客户端后,安装即可。 2. 在服务器A上开启远

    • Clone the popular game 2048 该游戏软件主要是采用Qt框架下的QML来开发,可能大家对Qt/QML不是太熟悉,详细可以参考Qt官网 2048最近比较火的移动app,我克隆了桌面客户,请大家在工作之余无聊的时候,用右手控制上下左右键尽情蹂躏吧

    • 我试图在JMeter中记录一个桌面应用程序(银行应用程序)。该应用程序使用SSO登录。在记录JMeter的应用程序时,我面临以下错误。 我已经尝试过添加授权管理器以及将实现更改为Java,但徒劳无功。 JMeter中的错误:- 错误o.a.j.p.h.s.HTTPJavaImpl:readResponse:java.io。IOException:服务器返回了URL:https://2020-07-

    • 我有一个Java桌面应用程序。我发现了很多关于web应用SSO身份验证的在线资源。我需要一个旧的学校桌面应用程序同样的东西。基本上,我需要该应用程序打开浏览器窗口,让用户根据ADF进行身份验证,然后取回令牌。 如何使用ADFS/SAML添加SSO身份验证?

    • Kubernetic - 一款kubenretes桌面客户端,https://kubernetic.com/,支持以下特性: 实时展示集群状态 多集群,多个namespace管理 原生kubernetes支持 支持使用chart安装应用 使用kubeconfig登陆认证 该客户端支持Mac和Windows系统,beta版本免费使用,stable版本需要付费。beta版本某些功能不完善,比如无法在应

    • 问题内容: 我正在开发一个项目,该项目需要解析一些受保护的网页中的数据。为了获得对这些页面的访问权限,我必须克服SAML身份验证形式(Shibboleth)。是否有人能够在Android(Java)中实现此标准?我已经读过这个线程:Android的SAML客户端实现? 但这并不能给我一个很好的解决方案。实际上,我需要 获取某些受保护网页的数据 以便对其进行解析,而不是让用户看到此类网页的内容。因此