新しい認証の仕組み ー ASP.NET Identity
VS2013 では One ASP.NET という掛け声のもと、 ASP.NET の各種テンプレートが変更されました。
この変更で認証の仕組みがいままでのメンバーシップから ASP.NET Identity へと変わっています。
ASP.NET Identity がどういったものか、というのは次のサイトからたどっていろいろ見てもらうのがよいのですが。。。
まぁ、これで終わっちゃうのもなんなので、ざっくり紹介してみます。
上記のサイトでの紹介もほとんど ASP.NET MVC のテンプレートなので、ここではわざと WebForms としてプロジェクトを構築して確認することにします。
右側に「認証: 個人ユーザー アカウント」と設定されています。
「認証の変更」ボタンをクリックすることでこの設定を変えることができます。
ここでは変更せずに、個人ユーザーアカウントのままプロジェクトを作成します。
#というか、他のパターンをまだ検証していません。
さて、プロジェクトができたらルートフォルダの Web.confg の内容を確認してみましょう。
authentication mode は Forms ではなく ”None” です。
また、メンバーシップ、プロファイル、ロールはみんな「無効」です。
これで従来のメンバーシップが利用されていないことははっきりします。
ついでに、 Account フォルダの下にある Web.config の内容も確認してみましょう。
これは Manage.aspx というファイルにたいし、ログインしている必要がある、という従来どおりの設定ですね。
ここで、メンバーシップは使っていないものの、許可/拒否の設定は従来どおり、というのがわかります。
では実際にユーザー登録を行ってみましょう。
アプリケーションを実行し、登録リンクをクリックします。
ユーザーの登録画面が表示されるので、適当なユーザーを作成します。
ユーザー登録については、同じユーザー名がいる場合はエラーになります。
また、英数字以外は登録できません。
「.」をいれるだけでエラーになります。当然日本語も。
日本語はまぁいいんですけど、メールアドレスをユーザー名として使うこともできないんですね。
このあたりは拡張したくなるかも。。。
ユーザー登録が無事に終わると、ユーザー名が表示され、ログオフリンクが表示されます。
この状態でユーザー名をクリックすると、パスワードが変更できるようになっています。
ログオフしてからログインリンクをクリックすると、下記のようなログイン画面が表示されます。
登録したユーザーでログインできることを確認しておきましょう。
で、テンプレートで認証関係で実装されているのはこの程度のようです。
パスワードリマインダとかはありません。
まぁ、メールアドレス登録するところがないので、リマインダメールとか送れないわけですが。
こんな状態で ASP.NET Identity を使うのに意味があるの?と思われそうですが、SNSを使ったログインが可能になる、という大きな利点があります。
App_Start フォルダ内の Startup.Auth.cs ファイルを表示します。
上記のように app.UseGoogleAuthentication(); の行を有効にしましょう。
Google アカウント以外では Microsoft アカウント、Twitter、Facebook でのログイン機能が用意されています。
その中で Google アカウントはなんの設定もなく使えるので、これで試してみます。
アプリケーションを実行し、ログインリンクをクリックします。
右側に Google によるログインボタンが表示されます。
このボタンをクリックすると、Google アカウントのログイン画面が表示されます。
ここで Google アカウントでログインすると、利用する情報の許可のページが表示されます。
関連付けフォームが表示されるので、ユーザー名を入力します。
これで登録は完了します。
次回以降、Google アカウントでのログイン情報が保持されている間は Google によるログインボタンをクリックするだけでログインできます。
ログイン情報が消えた場合も、再度 Google でログインすることで関連づけしたユーザーとしてログインされることになります。
さて、登録したユーザーのデータはどこにあるのかみてみましょうか。
ソリューションエクスプローラーで「すべてのファイルを表示」の状態にすると、 App_Data フォルダ内に mdf ファイルが作成されていることがわかります。
この mdf ファイルをダブルクリックするとサーバーエクスプローラーにデータベースの情報が表示されますので、ここからテーブルの定義や中身を見ることができます。
ASPNET.mdf のころと比べるとテーブル構成も非常にシンプルになっていて、必要最低限の情報しか持たない感じですね。
メールアドレスの登録もない、というのは前に書きましたが、複数回ログインに失敗したときのアカウントロック等の機能もなさそうです。
このあたりは必要であれば自分で実装しろ、ということなのでしょう。
テンプレートの標準では、 ASP.NET Identity は EntityFramework を利用する形で実装されており、Entity Framework Migration の機能をつかうと拡張も簡単、という話が次のページに紹介されています。
Customizing profile information in ASP.NET Identity in VS 2013 templates
このあたりをからめて、すぐに必要になりそうな機能をどう実装したらいいか、これからまとめてみたいと考えてます。
さてさて、どうなるかな?
One ASP.NET と Web サイトプロジェクト
VisualStudio 2013 では One ASP.NET の概念にあわせ、Web アプリケーションのテンプレートの選択の仕方が変わりました。
新しいプロジェクトを選ぶと、Web 関係では次のように「ASP.NET Web アプリケーション」だけが選択できるようになっています。
ここで OK ボタンを押したあとで、Web Forms、MVC 等のどの技術を使うか選択することになります。
この画面をみると、選択した技術に加えて他の技術のフォルダーやコア参照が追加できることがわかります。
実際に使うかどうか別として、Web Forms と MVC のハイブリッドな環境なんかも簡単につくることができますね。
テンプレートで作成されるのは Web Froms でも MVC でも同じ内容のサンプルアプリケーションです。
新しいサンプルアプリケーションはレスポンシブデザインが採用され、ブートストラップに対応しています。
このあたりの詳細は .NET Week – エバンジェリストセミナー の チャックさんのセッション や 武田さんのセッション をみていただくのがよいと思います。
さて、最初のプロジェクトの選択画面をよくみてください。
選択できるのは「ASP.NET Web アプリケーション」です。
「Web アプリケーション」 プロジェクトがまとめられている、となると、「Web サイト」 プロジェクトは??? という疑問がでてきませんか?
ということで、メニューから [ファイル]-[新規作成]-[Web サイト] と選択してみましょう。
残念ながら、こちらは以前と同じような選択画面がでてきます。
特に変わったところはありません。
ただし、 ASP.NET Web フォーム サイト を作成すると、そこで提供されるサンプルアプリケーションは Web Froms や MVC とまったく同じ内容になっています。
Web サイトのテンプレートでも認証の機能として新しく導入された ASP.NET Identity が利用されています。
# ASP.NET Identity については別に紹介する予定。。。
なので、ここまでは One ASP.NET といえますかねぇ。
実は、Web サイトのテンプレートとして Razor v3 を選択すると。。。
サンプルアプリケーションは以前のまま。
認証も SimpleMembership が利用されています。
このあたりは WebMatrix 側が変わってないため、そちらと互換性を持たせるためかなぁ、と思ってます。
サンプルアプリケーションの内容が変わったので、これからはその中身を少し追いかけていきますかね。
しばらくは大きく変わった ASP.NET Identity の話が中心になるかな。
ジャンプ スタート コンテンツに字幕がついてうれしい
Channel9 で前から提供されていた学習コンテンツにジャンプスタートシリーズがあるんですが、このコンテンツの一部に日本語字幕がついて提供がはじまったようです。
Microsoft Virtual Academy のサイト内でいまいち検索しづらいのですが、きづいた限りで以下のコンテンツが提供されています。
JavaScript x CSS3 x HTML5 開発ジャンプスタート
ASP.NET で作る Web アプリケーション構築ジャンプスタート
Visual Studio 2012 を活用した ALM ジャンプスタート
日本語のミスとかありますが、まぁ、英語だけ聞いてるよりはよくわかるかと。
Channel9 本家でも同じ字幕を見れますが、せっかくなので MVA のサイトから見てポイントを稼ぐとよいのではないでしょうか。
ビデオおとしただけで学習してなかったコンテンツとかあるので、これを機に勉強しておかなくては。。。
Windows 8.1 ではシャットダウンが簡単になった?
最近はノートPCをWindows 8.1 にあげて使ってます。
で、ちょっと便利だな、と思ったので。
Win8になったとき、「シャットダウンが~」と問題になりました?が、8.1ではキー入力で簡単にシャットダウン/スリープ/再起動を実行できるようになってます。
デスクトップを選択した状態(デスクトップ画面でウィンドウ以外のところをマウスクリックなど)で Alt + F4 を押すだけ。
で、以下のような「Windows のシャットダウン」ウィンドウがあがってきます。
ここで動作を選択してOKボタンをクリックするだけ。
Win8アプリの実行中だったら、Winキー + D でデスクトップに遷移し、Alt + F4 ですぐにスリープとかが楽にできますね。
タッチ未対応のノートPCを利用してるので、いままでだとマウスを右下にもっていって、、、とか面倒だったんですけど、これなら簡単。
ということでおもにキーボード操作で使っている人向けのTipsかな?