2012年7月31日

Windows8とVS2012とACS。(3)

Windows8とVS2012でサイトを作る

Windows8+VisualStudio2012で.Net4環境(AzureのWebSites)からACSを使うとなると。
結構面倒くさいです。
もう、VisualStudio2010を使った今までの環境でいいよ、と思うくらいには。
まあ、慣れていない(.NetもAzureも使いだしたのは今年の3月からなんですよ、自分)者にしてみれば、どんな環境だろうが時間かかるんですけどね。

というわけで、文章より絵で見たほうが理解が早かろう、ということで。
画像多めにしてみます。

サイトのプロジェクトを作る

VisualStudio2012はもちろん、Ultimate版。
Expressではサイト作れませんし。

まずは簡単にサイトのプロジェクトを作ります。
使うのはASP.Net MVC4。
…単にシュミです。

acstest01

大事なのは、ダイアログ上部の選択で.NET Framework 4にすること。
こうしないとWebSitesで使えなくなってしまいますし。
とりあえずプロジェクト名はAcsTestにしました。
プロジェクトを作るとlocalhost環境で使うポート番号が決まりますから。
(もちろん、自分で設定してもおっけーですっ!)

WebSitesでサイトを作る

acstest02

次にWebSitesでサイトの設定をしておきます。
サイトを作ればURLが決まりますので。
新しいマネージメントポータルでWebSitesを作ります。

acstest03

このようにURLが決まります。
せっかくなので、上部のリンク、「Download publish profile」から更新用のプロファイルをダウンロードしておきます。

旧ポータルサイトでACSの名前空間を作成する

acstest04

次にACSの設定です。
ポータルの上部の画像の部分をクリックし、旧ポータルへ連れていってもらいます。
「PREVIEW」の部分をクリックすると、

acstest05

このようなウインドウが開きますので、「Take me previous portal」を選びます。
これでSilverlightを使った旧ポータルサイトに移動できます。

acstest06

旧ポータルでは左側メニューから「サービスバス、アクセス制御、キャッシュ」と「アクセス制御」を順に選びます。
ACSのサービス名前空間(Namespace……)を設定する画面になるので、適当な6~12文字のNamespaceを設定し、アクセス制御機能を使う準備をします。
この設定が修正可能になるまで少々時間がかかるので、その間にWindows8のシステム設定を変更します。

Windows Identity Foundationを使用可能にする

acstest08

まず、コントロールパネルを開き、「プログラムと機能」を選んで起動します。
起動したら、ウインドウ左側メニューの中から「Windowsの機能の有効化または無効化」を選びます。

acstest09

いつの頃からかわかりませんが、この中にWindows Identity Foundation 3.5が入っています。
これにチェックを入れ、有効にします。

acstest10

最初、Windows8RCをインストールし、VisualStudio2012を直後にインストールしましたが、その時には無かった筈なんですよね……。
記憶があいまいなので、実はちょっと断言できないのですが。

さて、Windows Identity Foundationを有効化できますと、2010の環境でおなじみのWindows Identity Foundation SDKのFedUtil.exeが使用できます。
バージョンも3.5ですので、日本語環境英語環境どちらでも好きなバージョンでインストールが可能です。
(自分は日本語Windows8RCに英語バージョンのWIF SDKをインストールして使用しています)

WIFを使用するようにコントロールパネルで設定すると、再起動を促されると思われます。
そしてSDKをインストール、などとしている間にACSの方が有効になっているはずですので、ACSの設定に入るわけですが。
そこはまた次回、ということで。
(あ、ソースを張るような場所がなかった)

2012年7月28日

SyntaxHighlighterを組み込んでみる

ACSの記事はさておき

続けてACSを使うようにする記事を書こうと思ったのですが。
考えてみると、ソースコードなどをいくつか張ってしまう!
というわけで、コード部分のHighlighterであるSyntax Highlighterを導入してみました。

fabiconを見てもらうと分かる通り、実はBloggerでこれを書いています。
んで、とりあえずSyntaxHighlighterを調べてみるかー、とぐぐるさんに聞いてみると、検索の一番上に出てきたのがこの記事。

これ幸い、と参考にさせてもらいまして。

ところで、なんで検索でこれが最初に出てきたかといいますと、最初間違えて「Syntax Hilighter」で検索したから、だったりします。
スペルミスしちゃったんですよね(笑)

で、試行錯誤したんですが、結局うまくいかず。
元に戻って他の記事も参考にさせてもらいまして。
それが、

ここ、完ぺきでした。
そのまま使用させてもらい。
(スクリプトのURLだけ自分のところに変更してあります)
普通に動きました。

Syntax Highlighterのテスト

さっそく、テストをしてみます。

まずはC#。

    public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}

/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name=" e?>Event data that describes how this page was reached. The Parameter
/// property is typically used to configure the page.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
}

private void OnClickTest(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(TopPage));
}
}
次はXML。
<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>
<!--Commented out by FedUtil-->
<authentication mode="Forms">
  <forms loginUrl="~/login" timeout="2880" requireSSL="true" />
</authentication>
<!--
<authentication mode="None" />
-->


さてさて、うまくいくでしょうか。


実は、投稿にWindows Live Writerを使用していることもあり。
これから書いてみるのですが(後でソースを触る)、ちゃんと行くのかどうか、ちょっとドキドキもんだったりします。
(もちろん、テストでBloggerサイトから書いた場合は成功したんですよ。ちなみに両方とも実際に使ったことのあるソース)

2012年7月27日

Windows8とVS2012とACS。(2)

Identity and Access tool

Windows8 + VisualStudio2012で作成し、Server2012で動かすような.Net4.5の環境だけでACSを使うのなら、実は設定は簡単です。
Identity and Access toolというツールがあって。
これに設定を手伝ってもらうことであっさりACSで認証できるようになります。

NuGetツールでIdentity and Access toolをインストールすれば簡単に設定ができるメニューが増えます。

Identity_nuget_search

NuGetツールでIdentityで検索すれば今のところ該当するのは1件しかありません。
このツールをインストールすることで、プロジェクトを右クリックした際に表示されるメニューにIdentity and Access…というメニューが出るようになります。

identity_menu

このメニューを選択することで設定ダイアログが開き、そこからAzureの設定を行うことができます。
この辺の設定はWIF SDKでFedUtil.exeを使ったことのある人なら楽々ですね。

IdentityAndAccessSetting

WS-Federationのxmlを読み込ませる必要があったのが、Namespaceの設定のみで行けるようになっているのが大きな進歩です。
(上記ダイアログの真ん中ら辺)

Azure WebSites

上記のIdentity and Access toolが出てくるようになった頃、Windows Azureが進化しました。
WebSitesという機能で5分でサイトが作れるというスグレモノです。
しかも共用なら10サイトまで無料!
なんて太っ腹な。

ところがところが。
この無料のWebSites、.Net4の環境なんですよ。
(2012がまだ正式リリース前なので当たり前)

Identity and Access toolで出力されるWeb.config、これは.Net4.5用のものしか作ってくれません。
しかたないのでIdentity and Access toolはAzureを相手にする場合は使えない子、ということになります。
(もちろん、Virtual MachineでWindows Server 2012を選べば使えまくれます)
早くAzure環境も.Net4.5で動いてほしいですね。

ではでは、Windows8 + VS2012ではWebSites + ACSのものは作れないのでしょうか。
実はそんなことはなく。
作れる方法があります。
それはまた次回、ということで。

2012年7月26日

Windows8とVS2012とACS。(1)

Web技術とのこと。

最近はWindows Azureにどっぷりです。
元からWebの技術的なものには多少興味があったんですけど。
仕事でやる機会もほとんどなく。
(もともと組み込み系でしたし…)

ところがここ最近の仕事が電子書籍系。
しかも、サーバーもまるっと面倒見ないといけなくなってしまい。
だもんで、勉強がてらいろいろ楽しんでいるわけです。

Windows Azure

Windows Azureもその仕事の一環で触ってみました。
Windows8でアプリを作ることになってしまい。
その連携として最初はSkyDriveを使う予定だったんですけどねー。
いろいろあってそれは断念せざるをえなくなってしまい。
代替案としてWindows Azureが出てきたわけです。

安いんですよ。
特にコンテンツを日本だけでなく、海外でも売ろうと思ったりしたら。
簡単にリージョン指定できるし、CDNあるので最悪キャッシュできるし。

ACS

Windows AzureにはSingle Sign Onを実現可能にする機能としてACSという機能があります。
ざっくり言ってしまうと、自サイトのログイン機能としてFacebookやGoogleのログイン機能を使えるようにしてしまおう、というもの。
外にあるOAuthやOpenIDのID Provider認証を統合的に使えるようにしよう、と。
そんなかんじ。

もう、ちょこちょこっと作ってみると、簡単に認証画面なんかできてしまうんですけど。
とりあえず今回はこの口上のみということで、実際のオペレーションはまた今度、ということで……。

とりあえず、作り直し。

もう何度目かになるのかわからないけど。
また作り直しました。ブログ。

前のはWindows AzureのVMを使っていたんですが、WordPress+MySQLにしてたところ、MySQLのうるう秒問題であっさり逝ってしまいまして。
んで、データ吸い出しておこうと思ってディスクイメージを読み込んでいると無料サブスクリプションの分をあっさり食いつぶしてしまい。
サブスクリプションが一時停止になってしまったのでした。

もう自分で作るのはいいや(笑)

しばらくはBloggerでのんびりと書いていこうと思います。