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 ドメインの新規登録
使用条件に同意して先に進めると、図2 のようにドメインの設定画面へ移動します。この時点では登録したドメインを所有しているか証明されていないため、各種サービスはまだ使用できません。
図2 ドメインの設定
メール設定を行う場合は、登録ドメインのDNSのMXレコードを編集し、メール配信のサーバーをLive Hotmailサーバーに設定することで、ドメイン所有者であることを証明します。MXレコードをドメイン設定ページの記載の通りに設定しましょう。MXレコードの設定方法は、各ドメイン登録サービスやDNSプロバイダーによって異なりますので割愛します。MXレコードでなくCNAMEレコードを使用して一時的にドメイン所有者であることを証明することもできます。
以上のほかにも、TXTレコードおよびSRVレコードの設定方法も記載されているので必要に応じて設定します。TXTレコードは、登録ドメインのメールサーバーがLive Hotmailサーバーであることを指定して、ドメインから発信されるメールの信頼性をあげるために使用します。SRVレコードは、Live Messenger以外のインスタント メッセージング クライアントを使用するユーザーと登録ドメインのユーザーとが、メッセージをやり取りするために必要な設定です。特に設定しなくても問題ないでしょう。
アカウントの管理
メールの設定が完了し、登録ドメインの所有者と証明されると各種機能が利用可能になります。アカウントの管理では、メールアカウントの作成や削除、ユーザーごとのメールの停止などができます(図3 ) 。アカウント追加時に管理者が仮のパスワードを設定し、そのアカウントを利用するユーザーは、はじめての利用時に自分でパスワードを設定します。それまでは作成したメールアドレスへメールは届きません。
図3 アカウントの管理
オープン メンバーシップ
上記の方法では、管理者がメンバーのアカウントを追加する必要がありますが、オープン メンバーシップ という機能を有効にするとアカウント作成モジュール や招待メールを利用して自由にWebサイトの訪問者や特定グループのメンバーがアカウントを作成できるようになります。
デフォルトではこの機能は無効に設定されています。利用する場合はWebサイトから有効に設定します(図4 ) 。
図4 オープン メンバーシップの有効・無効切り替え
アカウント作成モジュールは、Webサイトに設置するためのアカウント作成ページへの誘導バナーです。メニューからモジュールの作成が可能です(図5 ) 。モジュールの表示場所を招待メールにすると招待メッセージが作成できます。
図5 アカウント作成モジュールの作成
その他の機能
以上の機能以外にも次の機能が利用できます。
カスタム アドレス
登録ドメインのサブドメインを利用して、各種Liveサービスへ転送するサービスも提供されています(図6 ) 。たとえば、wl-users.jpというドメインを登録した場合、http://mail.wl-users.jp/をhttp://mail.live.com/ へ転送するといったことができます。利用にはDNSのCNAMEレコードを編集する必要があります。
図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 サンプルアプリケーションのひとつ
ドメインとアカウント情報の取得
それでは実際にコードを書いてみましょう。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 サービス参照の追加
以上で、Live アドミン センターとのやり取りに必要なクラスが生成されます。
サービスへの接続
Liveアドミン センターとのやり取りには認証が必要です。APIでは、Live IDアカウントのメールアドレスとパスワードを用いるものと、証明書を用いた認証が利用できます。本連載ではLive IDアカウントを利用した認証を利用します。
Liveアドミン センターの認証には、提供されているGetLoginUrl とGetLoginDataTemplate メソッドを使用します。GetLoginUrlメソッドで認証チケット(XML文字列)を返すために使用されているURLを取得し、GetLoginDataTemplateメソッドで認証チケットを入手するために必要なデータテンプレート(XML文字列)を取得します。取得したテンプレートを編集し、認証チケット取得用のURLにHTTP POSTメソッドにより送信すると、認証チケットが得られます。ここまでのコードは次のようになります。
Dim memberNameIn = "***@hotmail.com"
Dim password = "PASSWORD"
Dim client = New ManageDomain2SoapClient
Dim url = client.GetLoginUrl(memberNameIn)
Dim template = client.GetLoginDataTemplate
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
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には日本語の情報もありますが、内容が古いため英語のものを参照する必要がありますので、注意してください。