2015-09-07 53 views
0

我遇到了麻煩設置項目,訪問我公司的清晰度應用程序。 我已成功配置服務參考(在我的VisualStudio項目中)到我試圖連接的XOG。 我的實際代碼如下:以編程方式登錄以清除繞過sso重定向

 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的SSO服務,也是VisualStudio中的的Webbrowser內。事實上,如果我使用瀏覽器連接到清晰度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),所以如果有基於其他語言的解決方案,將不勝感激任何幫助。

謝謝

+0

您說「SSO已完成」是什麼意思?通過Internet Explorer或Visual Studio Web瀏覽器登錄與編程式C#Web服務代碼無關。 – Nathan

+0

好吧我不確切知道SSO是如何工作的,這是我第一次處理它。我已閱讀你的答案,我會繼續向你提供第二個選項 –

回答

1

我不是很熟悉,清晰/ XOG,但它似乎是或多或少一個標準的Web服務,我提供以下的可能性。

  1. 註冊用戶與清晰度,您的SSO實施部分,並用它作爲一種服務帳戶。看起來Clarity on Demand提供了將用戶標記爲「外部」的能力。因此,註冊一個標記爲「不是」外部用戶並使用這些憑據的用戶可能是您最簡單的方法。從https://communities.ca.com/thread/241696306

您是否嘗試過使用XOG用戶與外部驗證未選中狀態(在管理方),並且具有所有必要的XOG權利?

  • 除非,在你的另一個選項是通過構建http請求(例如,使用HttpClient)和張貼適當的形式的變量通過標準的HTTP協議的SSO登錄頁面進行通信(I假設您的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應用於請求。

    參見:

    +0

    謝謝內森,我不知道我的公司是否允許我使用外部用戶。第二個選項是我已經在繼續的選項,我會告訴你它是否可以工作。 –

    0

    我會建議使用清晰自己的XOG客戶端來檢查您可以登錄和讀/寫XOG所需文件預先。這是一個已發佈且經過驗證的界面。

    一旦工作,就會從另一個環境中利用XOG。考慮到XOG都是基於XML的,所以最好使用一些擅長處理XML的東西。

    使用Clarity XOG客戶端的另一種方法是使用SoapUI(http://www.soapui.org),它允許您更加交互一點。

    我還建議您在ca.com上搜索CA Clarity論壇