none
EWSを使用してOWAのメールボックス画面を開く方法 RRS feed

  • 質問

  • お世話になります。
    スレ違いかもしれませんが、もし大きく主旨がずれているようでしたらご指摘いただけたらと思います。

    ■ やりたいこと
    Exchange Web Service(EWS)を使用して、該当ユーザーのOutlook Web Access(OWA)の画面を開く

    ■ 不明点
    Exchange Web Services Managed APIでautodiscoverを使用して下記のように認証は行えました。
    (実際にはエラー処理など含まれていますが割愛しています)

    using Microsoft.Exchange.WebServices.Data;
    
    public void Certificate(string id, string pass)
    {
    	ExchangeService sv = new ExchangeService(ExchangeVersion.Exchange2010);
    	sv.Credentials = new System.Net.NetworkCredential(id, pass);
    	sv.AutodiscoverUrl(id, ValidateRedirectionUrlCallback); // autodiscoverで認証
    }
    
    private static bool ValidateRedirectionUrlCallback(string url)
    {
    	return true;
    }
    


    この後、認証が済んでいるExchangeServiceのオブジェクト「sv」などから、対象ユーザーのOWAのメールボックスの画面を開くためのURLを取得・作成できたらと思っていますが、それが可能なのかまた可能だとしたらどのような方法があるのかが不明な状況です。

    ■ 環境
    Exchange Server 2010
    VS2010 C#
    Exchange Web Services Managed API 1.1
    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c3342fb3-fbcc-4127-becf-872c746840e1

     

    皆様のお知恵を拝借できたら幸いです。
    よろしくお願い致します。

    2011年5月25日 4:43

すべての返信

  • 投稿場所があまり適当ではなかったでしょうか・・・。


    申し訳ございませんが、かまわず(笑)追記させていただきます。
    少し要件を上げさせていただこうかと思います。

    ■ 要件
    .NET FrameworkベースのアプリからOWAのメールボックス画面を開く事。

    現在、認証部分はEWSを使用しております。
    その流れでOWAのメールボックス画面を開くのもEWSから取得できる情報をもとに行えたらと思っていますが、EWSでなければいけないというわけではありません。
    認証部分を含め他の方法があればご指導いただけたらと思います。
    あくまで上記要件を満たしていれば、方法はどんな方法でもよいと思っております。


    個人的にはEWSではなく、OWA用のAPIみたいなものが公開されていてC#等からそれを利用できるような気がしていたのですが・・・

    何か情報があればご投稿いただけたら幸いです。
    よろしくお願いいたします。

    2011年5月26日 1:34
  • その後、色々と調べているのですが下記のようなサイトを見つけました。
    http://weblogs.asp.net/muhanadyounis/archive/2008/10/12/open-owa-with-c-inside-asp-net-site.aspx


    下記のようにowaauth.dllにポストでusername、password等を渡してあげればASP.NETからOWAの画面が表示できるということなのですが、私の環境では正常に動作いたしませんでした。

    private string userName;
    private string passWord;
    
    protected void Page_Load(object sender, EventArgs e)
    {
    	passWord = "password";
    	userName ="username";
    	Response.Write(CreateOWAFrom());
    	Response.Write(LoadOWAPostJS("logonForm"));
    }
    
    private string LoadOWAPostJS(string strFormId)
    {
    	//Constructs the JS needed to post the data to Realex and returns it
    	StringBuilder strScript = new StringBuilder();
    	strScript.Append("<script language='javascript'>");
    	strScript.Append("var ctlForm = document.forms.namedItem('{0}');");
    	strScript.Append("ctlForm.username.value=\"" + userName + "\";");
    	strScript.Append("ctlForm.password.value=\"" + passWord + "\";");
    	strScript.Append("ctlForm.submit();");
    	strScript.Append("</script>");
    	return String.Format(strScript.ToString(), strFormId);
    }
    
    private string CreateOWAFrom()
    {
    	//Constructs the Realex HTML form and returns it
    	StringBuilder strForm = new StringBuilder();
    	strForm.AppendLine("<form id=\"logonForm\" name=\"logonForm\" target=\"_self\" action=\"https://your_Owa_Adress/exchweb/bin/auth/owaauth.dll\" method=\"post\">");
    	strForm.AppendLine("<input type=\"hidden\" name=\"destination\" value=\"https://your_Owa_Adress/exchange/\"/>");
    	strForm.AppendLine("<input type=\"hidden\" name=\"flags\" value=\"0\"/>");
    	strForm.AppendLine("<input type=\"hidden\" name=\"username\" id=\"username\"/>");
    	strForm.AppendLine("<input type=\"hidden\" name=\"password\" id=\"password\"/>");
    	strForm.AppendLine("<input type=\"hidden\" id=\"SubmitCreds\" name=\"SubmitCreds\" value=\"Connection\"/>");
    	strForm.AppendLine("<input type=\"hidden\" id=\"rdoRich\" name=\"forcedownlevel\" value=\"0\"/>");
    	strForm.AppendLine("<input type=\"hidden\" id=\"rdoPublic\" name=\"trusted\" value=\"0\"/>");
    	strForm.AppendLine("</form>");
    	return strForm.ToString();
    }
    
    


    情報としては非常に惜しかったのですが・・・

    OWAのログイン画面を独自に作りたいですとか、独自アプリからOWAへのSSOを実装したいですとか、そのようなニーズはあるかと思います。
    なんとか.NET FrameworkベースのアプリからOWAへの認証&OWAメールボックス画面の表示ができたらと思っています。
    引き続き皆様からの情報をお寄せいただけたら幸いです。
    よろしくお願い致します。

     

    2011年5月27日 4:22
  • お世話になります。
    度々申し訳ございませんが、もう少し具体的に書かせていただこうかと思います。

    ある.NET Frameworkベースの自作アプリがあります。
    そのアプリからOWAの画面を開きたいと思っております。
    自作のアプリはWin・Web両方ありどちらからOWAへの認証&画面表示を行っても問題ありません。
    可能な方で対応をする予定です。

    具体的には・・・
    1.自作アプリからボタンなどをクリックするとID&パスを入力する画面が表示される。
    2.「1.」の画面でログインなどのボタンがクリックされると入力されたID&パスでOWAへの認証を行う
    3.「2.」で認証が通ったら、ブラウザを別ウィンドウで立ち上げて該当ユーザーのOWAのメールボックス画面を表示する。

    「1.」までを自作アプリ側で用意する事が要件となっております。
    つまり、OWAで用意されているデフォルトのログイン画面は使用できません。
    「2.」「3.」の認証&OWAメールボックス画面表示部分について可能な方法をご教示いただけたらと思っています。
    ちなみに認証だけであれば、上述の通りEWSを使用して行えております。

    非常に稚拙なスレで恐縮ですが(笑)、是非何かしらのアドバイスや指針をいただけたら幸いでございます。
    よろしくお願い致します。

    2011年5月29日 8:05