使える!メンバーシップ・ロール・プロファイル     どっとねっとふぁん      http://dotnetfan.org          小野 修司
メンバーシップコントロール入門 Login  - アカウントとパスワードによる認証 CreateUserWizard  - ユーザの登録 ChangePassword  - パスワード変更 PasswordRecovery  - パスワ...
ノンコーディングでデモシステム Default.aspx   LoginStatus   LoginName   ChangePassword Login.aspx   Login   CreateUserWizard Web ...
メンバーシップの基礎 メンバーシップとは  ユーザを個別に認証/承認する仕組み 認証  ユーザを確認する  ASP.NET による Form 認証時にメンバーシップが有効    (参考)    ASP.NET における認証の種類 ...
認証/承認のタイミング   アプリケーションイベント( HttpApplication クラス)     すべてのリクエストに対して順を追って発生( Http パイプライン)       BeginRequest             ...
認証の設定• 認証 – 2.0 のデフォルト値(明示的な設定なし)   • <authentication mode="Windows">   • <forms name=".ASPXAUTH" loginUrl="login.aspx"   ...
承認の設定• 承認 – 設定例(未認証ユーザを拒否)   • <authorization>   • <deny users=“?” />   • </authorization> – 許可( allow )/拒否( deny ) – すべての...
メンバーシップのデフォルト設定•   "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachine.config"    – <membership>    –   <providers>   ...
メンバーシッププロバイダ• ユーザの認証情報を保存/取得する• プロバイダを置き換えることで様々なデータストアに対応 – SqlMembershipProvider   • SQL Server を利用 – ActiveDirectoryMem...
メンバーシップ用 DB 設定• "C:WindowsMicrosoft.NETFrameworkv2.0.50727C ONFIGmachine.config“  – <connectionStrings>  – <add name="Loca...
メンバーシップ用データベース• ASPNETDB.MDF – “C:WindowsMicrosoft.NETFrameworkv2.0.50727ASP.NETWebA   dminFilesApp_DataASPNETDB.MDF” からコピ...
メンバーシップのカスタマイズ 見た目のカスタマイズ  オートフォーマットの適用  各種プロパティによる変更  テンプレート化して変更 表示項目のカスタマイズ  コントロールのプロパティと web.config の双方の調整が必   ...
メンバーシップ利用時の注意点 applicationName 要素の指定  デフォルト -  applicationName="/“  これを指定することで1つの DB で複数の Web アプ   リケーションのメンバーシップを管理するこ...
ロールの基礎 ロールとは  ユーザをグループ単位で認証/承認する仕組み 認証  ユーザを確認する  ASP.NET による Windows 認証時、及び Form 認証時  にロールが有効 承認  ページへのアクセス権を確認する ...
ロールのデフォルト設定 "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachine.config“    <roleManager>    <providers>      <add ...
ロールを有効にする 利用するための設定  Web.config の system.web 要素に以下を追加    <roleManager enabled="true" /> Windows 認証時の個別 Web アプリケーションのた ...
ロールを作成/設定する ロールの作成  Web サイト管理ツールから作成  プログラム上から作成    Global.asax を利用する例      void Application_Start(object sender, Eve...
ロールを利用する   フォルダ単位でロールによりアクセスを制限する       Admin フォルダ web.config         <authorization>              <allow roles="Admin...
プロファイルの基礎 プロファイルとは  サイトに接続した利用者に関する任意の情報を保存/参照で   きる仕組み  ログインしていないユーザもプロファイルを利用できる デフォルト設定  "C:WindowsMicrosoft.NETFr...
プロファイルを利用する web.config で設定   <profile>     <properties>      <add name="BloodType" serializeAs="String"/>     </prope...
匿名ユーザプロファイルを利用する web.config で設定   <anonymousIdentification enabled="true"/>   <profile>      <properties>       <add ...
プロファイルをどう活用するか 永続化が必要なデータ Session オブジェクトではなくプロファイルを利用 できないか検討してみる  サーバ上のメモリを圧迫しない  強く型付けされたプログラムを記述できる
メンバーシップの将来 AJAX でのサポート  メンバーシップベースの認証機能をサポート  AuthenicationServise クラス  ProfileService クラス IIS 7でのサポート  IIS7 のベースは A...
まとめ 基礎となるクラスの設定方法を理解する  設定で動作をカスタマイズできる 必要であればカスタム Provider クラスを実装して 置き換え可能  コントロール類はそのまま利用可能 メンバーシップはこれからの ASP.NET ア...
Upcoming SlideShare
Loading in …5
×

20061125

1,176 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,176
On SlideShare
0
From Embeds
0
Number of Embeds
30
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

20061125

  1. 1. 使える!メンバーシップ・ロール・プロファイル どっとねっとふぁん http://dotnetfan.org 小野 修司
  2. 2. メンバーシップコントロール入門 Login  - アカウントとパスワードによる認証 CreateUserWizard  - ユーザの登録 ChangePassword  - パスワード変更 PasswordRecovery  - パスワードの再送 LoginStatus  - ログイン状態表示 LoginName  - ログイン名表示 LoginView  - ログイン状態に応じた表示 Web サイト管理ツール  ユーザ、ロールの作成/アクセス規則の設定
  3. 3. ノンコーディングでデモシステム Default.aspx  LoginStatus  LoginName  ChangePassword Login.aspx  Login  CreateUserWizard Web サイト管理ツール  認証の種類 - インターネットから  アクセス規則の作成 - 匿名ユーザを拒否 ASPNETDB.MDF  ユーザ情報を格納するデータベース(自動作成)
  4. 4. メンバーシップの基礎 メンバーシップとは  ユーザを個別に認証/承認する仕組み 認証  ユーザを確認する  ASP.NET による Form 認証時にメンバーシップが有効  (参考)  ASP.NET における認証の種類  Windows 認証、 Form 認証、 Passport 認証  IIS における認証の種類  匿名アクセス、基本認証、統合 Windows 認証 承認  ページへのアクセス権を確認する  ユーザに対して許可/拒否
  5. 5. 認証/承認のタイミング アプリケーションイベント( HttpApplication クラス)  すべてのリクエストに対して順を追って発生( Http パイプライン)  BeginRequest リクエストに対する処理の開始時に発生  AuthenticateRequest 認証の開始時に発生  PostAuthenticateRequest 認証の終了時に発生  AuthorizeRequest 承認の開始時に発生  PostAuthorizeRequest 承認の終了時に発生  ResolveRequestCache キャッシュの処理の開始時に発生  PostResolveRequestCache キャッシュの処理の終了時に発生  PostMapRequestHandler ハンドラの生成後に発生  AcquireRequestState セッション等の状態の取得時に発生  PostAcquireRequestState セッション等の状態の取得後に発生  PreRequestHandlerExecute ハンドラの実行前に発生          ( Page クラスの処理)  PostRequestHandlerExecute ハンドラの実行後に発生  ReleaseRequestState セッション等の状態の開放時に発生  PostReleaseRequestState セッション等の状態の開放後に発生  UpdateRequestCache キャッシュの状態更新時に発生  PostUpdateRequestCache キャッシュの状態更新後に発生  EndRequest リクエストに対する処理の終了時に発生
  6. 6. 認証の設定• 認証 – 2.0 のデフォルト値(明示的な設定なし) • <authentication mode="Windows"> • <forms name=".ASPXAUTH" loginUrl="login.aspx" defaultUrl="default.aspx" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" domain="" enableCrossAppRedirects="false"> • <credentials passwordFormat="SHA1" /> • </forms> • <passport redirectUrl="internal" /> • </authentication> – メンバーシップのための設定 • <authentication mode="Forms" />
  7. 7. 承認の設定• 承認 – 設定例(未認証ユーザを拒否) • <authorization> • <deny users=“?” /> • </authorization> – 許可( allow )/拒否( deny ) – すべてのユーザ” *” /未認証ユーザ” ?” – ロール/ユーザ名の個別指定 – 適用順序は記述順 • <deny roles=“manager”> • <allow roles=“Admins”> • Admins と manager 2つのロールを持つ人は拒否 – フォルダ/ファイル単位で設定可能 • フォルダ毎の web.config • Location 要素の利用
  8. 8. メンバーシップのデフォルト設定• "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachine.config" – <membership> – <providers> – <add name=“AspNetSqlMembershipProvider” type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> – </providers> – </membership>• SqlMembershipProvider クラスを利用、各種プロパティを設定
  9. 9. メンバーシッププロバイダ• ユーザの認証情報を保存/取得する• プロバイダを置き換えることで様々なデータストアに対応 – SqlMembershipProvider • SQL Server を利用 – ActiveDirectoryMembershipProvider • Active Directory を利用 – AccessProvider • Access を利用 • サンプルとして提供されている • http://msdn2.microsoft.com/en-us/asp.net/aa336558.aspx• ほかのプロバイダも含めてソースコードが公開されている – http://weblogs.asp.net/scottgu/archive/2006/04/13/442772.aspx – これを参考に Oracle 等に対するプロバイダの実装も可能
  10. 10. メンバーシップ用 DB 設定• "C:WindowsMicrosoft.NETFrameworkv2.0.50727C ONFIGmachine.config“ – <connectionStrings> – <add name="LocalSqlServer" connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory| aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> – </connectionStrings>
  11. 11. メンバーシップ用データベース• ASPNETDB.MDF – “C:WindowsMicrosoft.NETFrameworkv2.0.50727ASP.NETWebA dminFilesApp_DataASPNETDB.MDF” からコピー – aspnet_regsql.exe により既存のデータベース上に必要なテーブ ル、ストアドプロシージャー等を追加できる – テーブル等を生成する SQL スクリプトも生成できる • aspnet_regsql.exe -sqlexportonly ファイル名 -A all • SQL サーバが利用できるレンタルサーバ上で利用可能 – 接続先データベースの変更 • <connectionStrings>         <remove name="LocalSqlServer"/>         <add name="LocalSqlServer” connectionString="server= サーバ名 ;uid= ユーザ ID;pwd= パスワード ;Trusted_Connection=no;database= データベ ース名 "           providerName="System.Data.SqlClient"/>   </connectionStrings>
  12. 12. メンバーシップのカスタマイズ 見た目のカスタマイズ  オートフォーマットの適用  各種プロパティによる変更  テンプレート化して変更 表示項目のカスタマイズ  コントロールのプロパティと web.config の双方の調整が必 要  例: CreateUserWizard コントロールからメールと質問項目 を削除  コントロールの RequireEmail プロパティを False に変更  SqlMemberShipProvider の以下の設定を確認  RequiresUniqueEmail  -  False (デフォルト)  requiresQuestionAndAnswer  -  False
  13. 13. メンバーシップ利用時の注意点 applicationName 要素の指定  デフォルト -  applicationName="/“  これを指定することで1つの DB で複数の Web アプ リケーションのメンバーシップを管理することも可 能  複数の Web アプリケーションで同一のユーザ情報 を管理することも可能
  14. 14. ロールの基礎 ロールとは  ユーザをグループ単位で認証/承認する仕組み 認証  ユーザを確認する  ASP.NET による Windows 認証時、及び Form 認証時 にロールが有効 承認  ページへのアクセス権を確認する  ロールに対して許可/拒否
  15. 15. ロールのデフォルト設定 "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachine.config“  <roleManager>  <providers>  <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />  <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />  </providers>  </roleManager> SqlRoleProvider  データベース上にロールを作成/取得 WindowsTokenRoleProvider  ActiveDirectory からロールを取得
  16. 16. ロールを有効にする 利用するための設定  Web.config の system.web 要素に以下を追加  <roleManager enabled="true" /> Windows 認証時の個別 Web アプリケーションのた めのロールの拡張  ADAM ( Active Directory Application Mode )を利用  SqlRoleProvider を利用
  17. 17. ロールを作成/設定する ロールの作成  Web サイト管理ツールから作成  プログラム上から作成  Global.asax を利用する例  void Application_Start(object sender, EventArgs e)  {  if (!Roles.RoleExists("Administrator"))  Roles.CreateRole("Administrator");  } ロールとユーザを関連づける  Web サイト管理ツールから設定  プログラム上から設定  Roles.AddUsersToRole(new string[]{"shu"}, "Administrator");
  18. 18. ロールを利用する フォルダ単位でロールによりアクセスを制限する  Admin フォルダ web.config  <authorization>  <allow roles="Admin"/>  <deny users ="*"/>  </authorization> ロールのアクセス権と TreeNode を連携する(セキュリティトリミング)  ルート web.config  <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">  <providers>  <add name="XmlSiteMapProvider" type ="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true" siteMapFile="Web.sitemap"/>  </providers>  </siteMap>  SiteMap ファイル  <?xml version="1.0" encoding="utf-8" ?>  <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >  <siteMapNode url="Default.aspx" title="root">  <siteMapNode url=“AdminDefault.aspx” title=“Adminroot” description=“” roles=“Admin”   />  <siteMapNode url=“UserDefault.aspx” title=“Userroot” description=“” roles=“User” />  </siteMapNode>  </siteMap>  SiteMapNode のすべてに url が設定されている必要がある
  19. 19. プロファイルの基礎 プロファイルとは  サイトに接続した利用者に関する任意の情報を保存/参照で きる仕組み  ログインしていないユーザもプロファイルを利用できる デフォルト設定  "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachi ne.config“  <profile>  <providers>  <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />  </providers>  </profile>
  20. 20. プロファイルを利用する web.config で設定  <profile>  <properties>  <add name="BloodType" serializeAs="String"/>  </properties>  </profile> プログラムで取得/設定  protected void Page_Load(object sender, EventArgs e)  {  if(!IsPostBack)  this.TextBox1.Text = Profile.BloodType;  }  protected void Button1_Click(object sender, EventArgs e)  {  Profile.BloodType = this.TextBox1.Text;  }
  21. 21. 匿名ユーザプロファイルを利用する web.config で設定  <anonymousIdentification enabled="true"/>  <profile>  <properties>  <add name=“BloodType” serializeAs=“String” allowAnonymous="true" />  </properties>  </profile> プログラムの設定/取得方法は同一 匿名ユーザから認証ユーザへの情報の受け渡し  Global.asax を利用する方法  public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)  {  ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID);  Profile.BloodType = anonymousProfile.BloodType;  }
  22. 22. プロファイルをどう活用するか 永続化が必要なデータ Session オブジェクトではなくプロファイルを利用 できないか検討してみる  サーバ上のメモリを圧迫しない  強く型付けされたプログラムを記述できる
  23. 23. メンバーシップの将来 AJAX でのサポート  メンバーシップベースの認証機能をサポート  AuthenicationServise クラス  ProfileService クラス IIS 7でのサポート  IIS7 のベースは ASP.NET に  メンバーシップも統合  Web サイト管理ツールと同様の処理が IIS7 の管理ツ ールとして利用可能に  Vista で確認
  24. 24. まとめ 基礎となるクラスの設定方法を理解する  設定で動作をカスタマイズできる 必要であればカスタム Provider クラスを実装して 置き換え可能  コントロール類はそのまま利用可能 メンバーシップはこれからの ASP.NET アプリの基 礎  活用していくための知識を身につけておこう

×