以编程方式登录以清晰绕过 sso 重定向

Programmatically login to clarity bypassing sso redirect

我在设置访问我公司的透明度应用程序的项目时遇到问题。 我已经成功地为我尝试连接的 XOG 配置了一个服务引用(在我的 VisualStudio 项目中)。 我的实际代码如下:

        Auth objAuth = new Auth();
        Login login = new Login();
        login.Username = "mylogin";
        login.Password = "mypwd";
        login.TenantId = "clarity";
        MyXOGQueryPortClient client = new MyXOGQueryPortClient();
        string ClaritySessionID = client.Login(login);
        objAuth.SessionID = ClaritySessionID;

我们的清晰度应用程序配置了公司的 SSO,因此我通过 InternetExplorer 以及 VisualStudio 的 Webbrowser 登录了 SSO 服务。事实上,如果我使用浏览器连接到 clarity URL,我不会被重定向到 SSO 页面。 问题是当程序调用 client.Login() 时,它返回 ProtocolException "The content type text/html of the response message does not match the content type of the binding (text/html; charset=utf-8)[...]"。在例外情况下,我可以看到页面的主体,它是 SSO 重定向页面。

问题是:我是不是代码有问题?考虑到 SSO 已经完成,我可以绕过 SSO 页面吗?我没有严格的义务使用 C#(甚至 .NET),因此,如果有基于其他语言的解决方案,我们将不胜感激。

谢谢

我对 Clarity/XOG 不是很熟悉,但由于它或多或少是一种标准的 Web 服务,我提供以下可能性。

  1. 使用 Clarity 注册一个用户,该用户 不是 SSO 实施的一部分,并将其用作一种服务帐户。 Clarity on Demand 似乎提供了将用户标记为 "external" 或不标记的功能。因此,注册一个标记为 "not" 外部用户并使用这些凭据可能是最简单的方法。来自 https://communities.ca.com/thread/241696306

Have you tried using a xog user with the External Authentication unchecked (on the admin side), and having all the necessary xog rights ?

  1. 除此之外,您的另一个选择是通过构建 http 请求(例如使用 HttpClient)并通过标准 http 协议与您的 SSO 登录页面通信并发布适当的表单变量(我假设您的 SSO 没有' 提供 Web 服务)以获取身份验证 cookie。请注意,cookie 必须对 Web 服务站点有效,因此根据具体的设置方式,您可能需要以编程方式处理一系列 http 请求以获得正确的 cookie。获得身份验证 cookie 后,在 Web 服务调用中传递该 cookie。

有关使用 WCF Web 服务调用传递 cookie 的详细信息,请参阅 Making web service calls with WCF client + cookies(使用 OperationContext)。

或者您可以考虑使用 message inspector 将 cookie 应用于请求。

另请参阅:

我建议使用 Clarity 自己的 XOG 客户端来检查您是否可以登录并事先根据需要 read/write XOG 文件。这是一个已发布且经过充分验证的界面。

一旦成功,就可以从另一个环境中使用 XOG。记住 XOG 都是基于 XML 的,最好使用擅长处理 XML.

的东西

使用 Clarity XOG 客户端的替代方法是使用 SoapUI (http://www.soapui.org),它可以让您更具交互性。

我还建议在 ca.com

上搜索 CA Clarity 论坛