3

サポート チケット情報を使用して、サポート カスタマーと WebEx を開くための小さなツールを作成しています。サイトがユーザー名/パスワードを使用していたときは機能させることができましたが、現在は SSO を使用しています。WebEx サーバーは、SSO を受け入れるように既にセットアップされています (私ではなく IT マネージャーによって)。

WebEx リファレンス (以下にリンク) は詳細を説明しておらず、公式サイトの WebEx 開発者フォーラムは非常に休眠状態であり、この件に関する回答がないため、ここで運試しをすることにしました。
公式フォーラムに同じ質問を投稿しました

以下のコードを実際に機能させる方法を知っている人はいますか? タグに入る<samlResponse>ものと、コード内の以下の行を機能させるものに置き換えます。

    <samlResponse>samlResponse message will go here</samlResponse>

ドキュメントのSAML アサーション(以下を参照) は何を意味しますか?

今までわかったこと

WebEx のXML-API ドキュメント(ページ 68) では、次のように説明されています。

3.1 ユーザー認証

AuthenticateUser API は、ユーザー パスワードの代わりに SAML アサーションを受け入れます。返された は、Super Admin で定義されているセッション期間を使用せずに、後続の XML API 要求に使用できます。これは、認証の現在の要件に取って代わることができます。...

次のスキーマ ダイアグラムは、AuthenticateUser 要求メッセージの要素構造を示しています。

次に、XML スキーマ図とサンプルを提供します。

サンプルの .NET コード (SAML を使用しない) を参照して、次のコードを思いつきました。

string strXMLServer = "https://varonis.webex.com/WBXService/XMLService";
WebRequest request = WebRequest.Create(strXMLServer);
// Set the Method property of the request to POST.
request.Method = "POST";
// Set the ContentType property of the WebRequest.
request.ContentType = "application/x-www-form-urlencoded";

// Create POST data and convert it to a byte array.
Func<StringBuilder, StringBuilder> webExXML =
    bodySB => new StringBuilder(1024) // Currently 294 bytes in length
        .AppendLine("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>")
        .Append("<serv:message xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"")
        .Append(" xmlns:serv=\"http://www.webex.com/schemas/2002/06/service\"")
        .Append(" xsi:schemaLocation=\"http://www.webex.com/schemas/2002/06/service")
        .Append(" http://www.webex.com/schemas/2002/06/service/service.xsd\">") 
        .AppendLine("<header>")
        .AppendLine("<securityContext>")
        .AppendLine("<siteName>siteName</siteName>")
        .AppendLine("<webExID>username</webExID>")
        .AppendLine("<password></password>")
        .AppendLine("<partnerID></partnerID>")
        .AppendLine("</securityContext>")
        .AppendLine("</header>")
        .AppendLine()
        .AppendLine("<body>")
        .Append(bodySB)
        .AppendLine()
        .AppendLine("</body>")
        .AppendLine("</serv:message>");

var xmlAuthBodyContent = new StringBuilder()
    .AppendLine("<bodyContent ")
    .AppendLine("xsi:type=\"java:com.webex.service.binding.user.AuthenticateUser\">")
    .AppendLine("<samlResponse>samlResponse message will go here</samlResponse>")
    .AppendLine("</bodyContent>");

byte[] byteArray = Encoding.UTF8.GetBytes(webExXML(xmlAuthBodyContent).ToString());

// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;

// Get the request stream.
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();
// Get the response.
WebResponse response = request.GetResponse();

DataSet DSResponse = new DataSet();
DSResponse.ReadXml(response.GetResponseStream());
DSResponse.GetXml().Dump();

私が得る結果は次のとおりです。

<serv:message xmlns:serv="http://www.webex.com/schemas/2002/06/service">
<serv:header>
    <serv:response>
    <serv:result>FAILURE</serv:result>
    <serv:reason>Authentication Server can't generate a valid session ticket</serv:reason>
    <serv:gsbStatus>PRIMARY</serv:gsbStatus>
    <serv:exceptionID>030048</serv:exceptionID>
    <serv:subErrors>
        <serv:subError>
        <serv:exceptionID>AS0062</serv:exceptionID>
        <serv:reason>Validate assertion failed</serv:reason>
        <serv:value />
        </serv:subError>
    </serv:subErrors>
    </serv:response>
</serv:header>
<serv:body>
    <serv:bodyContent />
</serv:body>
</serv:message>
4

2 に答える 2

4

最終的にWebEx フォーラムで Nathan Morrow からの回答を得ました。ここにいる誰かが役に立つと思った場合に備えて、彼の許可を得てここにコンテンツをコピーします。

答え:

SAML アサーションは、SAML ベースの認証に使用される XML スタイルのドキュメントです。これには、認証に必要ないくつかの値と、構成済みの信頼証明書を使用したデジタル署名が含まれています。使用されている ID 管理システムから SAML アサーションを取得するためのアクセス権を取得するには、IT 部門と協力する必要があります。SAML アサーションを BASE64 形式で取得できたら (この形式では XML のようには見えず、文字のブロックにすぎません)、アサーション全体を authenticateUser リクエストの samlResponse 要素に配置します。

次に、WebEx ワンクリック ツールがどのように機能するかを尋ねると、彼は次のように答えました。

WebEx 生産性ツールは、カスタムの内部 API と Web ブラウザー機能を使用して、会社の認証ポータルにアクセスし、認証を確認します。舞台裏で関与する SAML アサーションがあります。ツールのアサーションを取得できるようになると、バックグラウンドでエンド ユーザーにも表示されます。

于 2013-01-02T18:42:40.870 に答える