gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:34:50 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

  • 获取 token
    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);
    }
    }
    }
  • 然后将获得的 token 用于服务调用:
    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 {...}

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

    关于web-services - 使用 SAML 的 SSO 桌面客户端应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27917783/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com