Windows Azure Full IIS で Machine Key が再設定される

Windows Azure SDK 1.3 の機能であるFull IISを利用してWeb Roleを展開すると、Web.configに明示的に指定してたMachineKeyが Windows Azure上に配置後上書きされる問題があります。(※Hosted Web Coreを利用する場合は問題ないようです)

この問題に対する回避策はSteve Marxが回答していますが、MSDNのIssueにあるようにRoleEnvironmentのOnStart等で明示的に書き換えてあげる必要があるようです。

続きを読む

WCF Data Services の続き

前回のPOSTで書き忘れたこと。

インターセプターを使えば特定の列だけ値を変える等できます。OData and Authentication – Part 7 – Forms Authentication にも記載されていますが、たとえば認証されているときだけセンシティブな情報を返すとか。

認証ユーザーやロールに応じて1つのWCF Data Services で柔軟に操作範囲を変えたりできるのはすごく便利ですね。

あと忘れてましたがASP.NET開発環境だとうまくフォーム認証が動きませんでした。(.adxが見れない?)このあたりあまり情報なくてちょっと諦め気味…
面倒だけどデバッグはIISのワーカープロセスにアタッチする等したほうがいいのかも…?
またSQL Serverへの接続は手抜きですが、アプリケーションプールのユーザー等にアクセス権限無いと無駄に怒られますので注意。

最後に追加でいろいろリンクを置いておきます。

WCF Data Services で フォーム認証を利用する

ちと調べてて悩んでたので一応吐き出しておきます。

WCF Data Services を使うとOData形式等で強力なデータ連携が可能になります。
特に Entity Framework や LINQとの相性は抜群です。

でもむやみやたりにデータ公開したくないわけで。特にクラウドに置いたりする場合は。
じゃやっぱり認証かけたいよね、ということで今回は以下のケースで考えてみます。

  • 認証は必要だけど、最初だけの認証にしたい
  • クライアントアプリケーション内で(プログラムで)処理したいので、最初の認証以降はプログラム内で処理したい
  • フェデレーションもいいんだけど認証プロバイダも弄りたいというかカスタム認証プロバイダ使いたいです

イントラネット等でWindows統合認証が使えるならこんな苦労はないのかも知れませんが、プログラム内から操作する方法だと取れる手法は限られてきます。

で、今回はお手軽にフォーム認証を使って Cookie ベースで制限をかけたいと思います。(まぁなんというか、やってることは OData and Authentication – Part 7 – Forms Authentication と変わりません。)

※ Cookie ベースならまぁローカルに保存してても許してくれそうですし。

続きを読む

ASP.NET MVC3 RTM!

ASP.NET MVC3がやっとRTMになりました。(RTWじゃなくてRTMなんですね)

さて例によって Windows Azure 上でASP.NET MVC3を使おうとすると、アセンブリ参照をごそごそ追加してローカルコピーをTrueにしないといけないわけです。

※詳しくは 割と普通 さんの 記事「ASP.NET MVC3 RTMをWindows Azureで動かす!!~懇切丁寧な解説付き~」を参照ください

続きを読む