使ってみよう! Windows Live SDK/API

第29回Live アドミン センター─⁠─独自ドメインでLive Hotmailを利用

Windows Liveアドミン センター

今回はWindows Liveアドミン センターというサービスを紹介します。開発者向けにSDKも公開されていますので、Liveアドミン センターの紹介の後、そちらも紹介します。

Windows Liveアドミン センターとは、独自ドメインでWindows Live Hotmailなどが利用できるサービスです。組織向けのサービスで、多数のメールアカウントが作成できユーザーの管理もWebサイトから可能です。また、独自ドメインを利用してLive HotmailやLive Spacesといったページに移動もでき、LiveサービスのWebページのロゴを独自のものに変更することもできます。自前でメールサービスを用意する必要がなく、かつ無料で利用できるため低コストでサービスを運用できる点が特長です。Live@eduという教育機関向けにサービス設計したものも提供されています。

Liveアドミン センターは、個人での利用も可能です。アカウントは初期状態で500個まで作成でき、通常のLive IDアカウントと同様に使用することができます。独自ドメインのアカウントは管理者だけでなく、誰でもアカウントを作成できるようサービスを選択すれば、Webサイトの宣伝などに活用もできます。

ドメインの登録と設定

それでは、サービスの利用方法をみていきましょう。サービスの利用前にドメインを準備する必要があります。独自ドメインによるメール配信には、DNSサーバーのMXレコードを設定する必要がありますので、少なくともMXレコードの設定可能な環境が必要です。またLiveアドミン センターの利用にはWindows Live IDアカウントも必要です。

登録は、Windows Liveアドミン センターのドメインの新規登録から用意したドメインを入力します図1⁠。このときLive Hotmailサービスを利用するか選択でき、メールサービスを利用しない場合も登録可能です。

図1 ドメインの新規登録
図1 ドメインの新規登録

使用条件に同意して先に進めると、図2のようにドメインの設定画面へ移動します。この時点では登録したドメインを所有しているか証明されていないため、各種サービスはまだ使用できません。

図2 ドメインの設定
図2 ドメインの設定

メール設定を行う場合は、登録ドメインのDNSのMXレコードを編集し、メール配信のサーバーをLive Hotmailサーバーに設定することで、ドメイン所有者であることを証明します。MXレコードをドメイン設定ページの記載の通りに設定しましょう。MXレコードの設定方法は、各ドメイン登録サービスやDNSプロバイダーによって異なりますので割愛します。MXレコードでなくCNAMEレコードを使用して一時的にドメイン所有者であることを証明することもできます。

以上のほかにも、TXTレコードおよびSRVレコードの設定方法も記載されているので必要に応じて設定します。TXTレコードは、登録ドメインのメールサーバーがLive Hotmailサーバーであることを指定して、ドメインから発信されるメールの信頼性をあげるために使用します。SRVレコードは、Live Messenger以外のインスタント メッセージング クライアントを使用するユーザーと登録ドメインのユーザーとが、メッセージをやり取りするために必要な設定です。特に設定しなくても問題ないでしょう。

アカウントの管理

メールの設定が完了し、登録ドメインの所有者と証明されると各種機能が利用可能になります。アカウントの管理では、メールアカウントの作成や削除、ユーザーごとのメールの停止などができます図3⁠。アカウント追加時に管理者が仮のパスワードを設定し、そのアカウントを利用するユーザーは、はじめての利用時に自分でパスワードを設定します。それまでは作成したメールアドレスへメールは届きません。

図3 アカウントの管理
図3 アカウントの管理

オープン メンバーシップ

上記の方法では、管理者がメンバーのアカウントを追加する必要がありますが、オープン メンバーシップという機能を有効にするとアカウント作成モジュールや招待メールを利用して自由にWebサイトの訪問者や特定グループのメンバーがアカウントを作成できるようになります。

デフォルトではこの機能は無効に設定されています。利用する場合はWebサイトから有効に設定します図4⁠。

図4 オープン メンバーシップの有効・無効切り替え
図4 オープン メンバーシップの有効・無効切り替え

アカウント作成モジュールは、Webサイトに設置するためのアカウント作成ページへの誘導バナーです。メニューからモジュールの作成が可能です図5⁠。モジュールの表示場所を招待メールにすると招待メッセージが作成できます。

図5 アカウント作成モジュールの作成
図5 アカウント作成モジュールの作成

その他の機能

以上の機能以外にも次の機能が利用できます。

カスタム アドレス

登録ドメインのサブドメインを利用して、各種Liveサービスへ転送するサービスも提供されています図6⁠。たとえば、wl-users.jpというドメインを登録した場合、http://mail.wl-users.jp/をhttp://mail.live.com/へ転送するといったことができます。利用にはDNSのCNAMEレコードを編集する必要があります。

図6 カスタム アドレス
図6 カスタム アドレス

ブランド提携

LiveサービスのWebサイトを、組織のWebサイトとしてユーザーに表示することができます。現在設定できる項目は、Webページ左上のロゴを独自のものに変更できることのみです。この変更を確認できるのは、管理者およびカスタムドメインのメンバーです。

Windows Liveアドミン センターSDK

さて、以上はLiveアドミン センターの簡単な紹介でした。Liveアドミン センターにはSDKも提供されています。SDKの内容についても少しコードを書いて確認してみましょう。

Webサイト上で行っていたアカウントの管理などは、提供されているWeb APIを利用することでも可能です。Liveアドミン センターに対する操作は、SOAPというXMLベースのプロトコルを用いたWeb APIで行います。用意されているすべてのメソッドはhttps://domains.live.com/service/managedomain2.asmxから確認できます。SDKは、Download Centerからダウンロード可能です。SDKの内容はいくつかのサンプルアプリケーション図7とそのソースコードです。Web API利用には必ずしも必要ではありませんが、開発の手助けとなるでしょう。

図7 サンプルアプリケーションのひとつ
図7 サンプルアプリケーションのひとつ

ドメインとアカウント情報の取得

それでは実際にコードを書いてみましょう。SOAPを利用したアプリケーションの作成はVisual Studioを用いると簡単にできます。今回も本連載のいつもの通りにVisual Basicを使用したコードを紹介します。無償のVisual Basic 2008 Express Editionでお試しください。SOAPはVisual Studioや.NET Frameworkに依存したものではありませんので、その他のプログラミング言語からも利用可能です。

プロジェクトの作成

Visual Studioで新しいプロジェクトを作成します。簡単に内容を確認するだけですので、コンソールアプリケーションで構いません。そして、プロジェクトメニューから「サービス参照の追加」を選択します。アドレス欄にhttps://domains.live.com/service/managedomain2.asmxと入力し、移動ボタンをクリックすると、サービスが表示されると思います図8⁠。名前空間を適当なものに変更してOKボタンをクリックします。

図8 サービス参照の追加
図8 サービス参照の追加

以上で、Live アドミン センターとのやり取りに必要なクラスが生成されます。

サービスへの接続

Liveアドミン センターとのやり取りには認証が必要です。APIでは、Live IDアカウントのメールアドレスとパスワードを用いるものと、証明書を用いた認証が利用できます。本連載ではLive IDアカウントを利用した認証を利用します。

Liveアドミン センターの認証には、提供されているGetLoginUrlGetLoginDataTemplateメソッドを使用します。GetLoginUrlメソッドで認証チケット(XML文字列)を返すために使用されているURLを取得し、GetLoginDataTemplateメソッドで認証チケットを入手するために必要なデータテンプレート(XML文字列)を取得します。取得したテンプレートを編集し、認証チケット取得用のURLにHTTP POSTメソッドにより送信すると、認証チケットが得られます。ここまでのコードは次のようになります。

' Live ID アカウント
Dim memberNameIn = "***@hotmail.com"
Dim password = "PASSWORD"

' Web API 接続クライアントの生成 (ServiceReference 名前空間を Import しておきます。)
Dim client = New ManageDomain2SoapClient

Dim url = client.GetLoginUrl(memberNameIn) ' 認証チケット取得URL
Dim template = client.GetLoginDataTemplate ' データテンプレート取得

' テンプレートの編集 (%NAME% と %PASSWORD% を アカウント情報に置換します)
template = template.Replace("%NAME%", memberNameIn)
template = template.Replace("%PASSWORD%", System.Security.SecurityElement.Escape(password))

' 認証チケットの取得
Dim authorizationData = GetAuthorizationData(url, template)

上記のGetAuthorizationDataは次のようなメソッドです。

Private Function GetAuthorizationData(ByVal url As String, ByVal request As String) As String
    Dim response As String = 
    Try
        Dim httpRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
        Dim rawRequest = Encoding.UTF8.GetBytes(request)
        httpRequest.ContentLength = rawRequest.Length
        httpRequest.ContentType = "text/xml"
        httpRequest.KeepAlive = False
        httpRequest.Method = "POST"
        httpRequest.Timeout = 30000
        httpRequest.UserAgent = "gihyo.jp sample"

        Using writer = httpRequest.GetRequestStream
            writer.Write(rawRequest, 0, rawRequest.Length)
        End Using

        Using httpResponse = DirectCast(httpRequest.GetResponse, HttpWebResponse), _
              reader = New StreamReader(httpResponse.GetResponseStream, System.Text.Encoding.UTF8)
            response = reader.ReadToEnd
        End Using

    Catch e As WebException
        ' Ignore
    End Try

    Return response
End Function

以上を実行すると、変数authorizationDataには認証用の文字列が格納されていると思います。

ドメインとアカウント情報の取得

続いて、Liveアドミン センターに登録したドメイン一覧とドメイン内のユーザーアカウント一覧を取得してみましょう。ドメイン情報一覧の取得にはEnumDomainsメソッド、ユーザーアカウント一覧はEnumMembersメソッドを使用します。

メソッド呼び出し時に、認証情報を一緒に指定する必要があります。ManageDomain2Authorizationクラスのインスタンスを生成し、取得した認証チケットの文字列とLive IDアカウントによる認証であることをプロパティに設定します。そして各メソッドの第1引数に指定します。各情報のコードは次のようになります。

' 管理ドメイン一覧
Dim domains = client.EnumDomains(auth)
For Each d In domains
    Console.WriteLine("Name: {0}, Num of Users: {1}", d.domainName, d.numUsers)
Next

' ドメイン内メンバー一覧
Dim users = client.EnumMembers(auth, domains.First.domainName, , 100)
For Each u In users
    Console.WriteLine(u)
Next

' 接続を閉じる
client.Close()

ドメイン取得のほうは、戻り値がDomainInfoというクラスの配列です。ドメイン名やそのドメイン下のユーザー数と最大ユーザー数などが参照できます。EnumMebersメソッドの第3引数に指定している文字列は、その文字から始まるメンバーを取得するためのものです。⁠a」と指定すると「a」から始まるメンバー一覧が取得できます。すべて取得する場合はコードのように空文字を指定します。第4引数の数値は一度に取得する最大のメンバー数です。

Visual Studioを使用すれば、特に難しいところはありませんね。もちろんこのほかにもユーザーを追加するメソッドなども用意されています。ですが、今回はここまでです。より詳しい情報は、リファレンスhttp://msdn.microsoft.com/en-us/library/bb259710.aspxを参照してください。MSDN Libraryには日本語の情報もありますが、内容が古いため英語のものを参照する必要がありますので、注意してください。

おすすめ記事

記事・ニュース一覧