SlideShare une entreprise Scribd logo
1  sur  24
使える!
メンバーシップ・ロール・プロファイル
     どっとねっとふぁん
      http://dotnetfan.org
          小野 修司
メンバーシップコントロール入門
 Login  - アカウントとパスワードによる認証
 CreateUserWizard  - ユーザの登録
 ChangePassword  - パスワード変更
 PasswordRecovery  - パスワードの再送
 LoginStatus  - ログイン状態表示
 LoginName  - ログイン名表示
 LoginView  - ログイン状態に応じた表示


 Web サイト管理ツール
  ユーザ、ロールの作成/アクセス規則の設定
ノンコーディングでデモシステム
 Default.aspx
   LoginStatus
   LoginName
   ChangePassword
 Login.aspx
   Login
   CreateUserWizard

 Web サイト管理ツール
   認証の種類 - インターネットから
   アクセス規則の作成 - 匿名ユーザを拒否

 ASPNETDB.MDF
   ユーザ情報を格納するデータベース(自動作成)
メンバーシップの基礎
 メンバーシップとは
  ユーザを個別に認証/承認する仕組み
 認証
  ユーザを確認する
  ASP.NET による Form 認証時にメンバーシップが有効
    (参考)
    ASP.NET における認証の種類
       Windows 認証、 Form 認証、 Passport 認証
    IIS における認証の種類
       匿名アクセス、基本認証、統合 Windows 認証
 承認
  ページへのアクセス権を確認する
    ユーザに対して許可/拒否
認証/承認のタイミング
   アプリケーションイベント( HttpApplication クラス)
     すべてのリクエストに対して順を追って発生( Http パイプライン)
       BeginRequest             リクエストに対する処理の開始時に発生
       AuthenticateRequest      認証の開始時に発生
       PostAuthenticateRequest  認証の終了時に発生
       AuthorizeRequest         承認の開始時に発生
       PostAuthorizeRequest     承認の終了時に発生
       ResolveRequestCache      キャッシュの処理の開始時に発生
       PostResolveRequestCache  キャッシュの処理の終了時に発生
       PostMapRequestHandler    ハンドラの生成後に発生
       AcquireRequestState      セッション等の状態の取得時に発生
       PostAcquireRequestState  セッション等の状態の取得後に発生
       PreRequestHandlerExecute ハンドラの実行前に発生
             ( Page クラスの処理)
         PostRequestHandlerExecute   ハンドラの実行後に発生
         ReleaseRequestState         セッション等の状態の開放時に発生
         PostReleaseRequestState     セッション等の状態の開放後に発生
         UpdateRequestCache          キャッシュの状態更新時に発生
         PostUpdateRequestCache      キャッシュの状態更新後に発生
         EndRequest                  リクエストに対する処理の終了時に発生
認証の設定
• 認証
 – 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" />
承認の設定
• 承認
 – 設定例(未認証ユーザを拒否)
   • <authorization>
   • <deny users=“?” />
   • </authorization>
 – 許可( allow )/拒否( deny )
 – すべてのユーザ” *” /未認証ユーザ” ?”
 – ロール/ユーザ名の個別指定
 – 適用順序は記述順
   • <deny roles=“manager”>
   • <allow roles=“Admins”>
   • Admins と manager 2つのロールを持つ人は拒否
 – フォルダ/ファイル単位で設定可能
   • フォルダ毎の web.config
   • Location 要素の利用
メンバーシップのデフォルト設定
•   "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 クラスを利用、各種プロパティを設定
メンバーシッププロバイダ
• ユーザの認証情報を保存/取得する
• プロバイダを置き換えることで様々なデータストアに対応
 – 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 等に対するプロバイダの実装も可能
メンバーシップ用 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>
メンバーシップ用データベース
• 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>
メンバーシップのカスタマイズ
 見た目のカスタマイズ
  オートフォーマットの適用
  各種プロパティによる変更
  テンプレート化して変更


 表示項目のカスタマイズ
  コントロールのプロパティと web.config の双方の調整が必
   要
  例: CreateUserWizard コントロールからメールと質問項目
   を削除
   コントロールの RequireEmail プロパティを False に変更
   SqlMemberShipProvider の以下の設定を確認
      RequiresUniqueEmail  -  False (デフォルト)
      requiresQuestionAndAnswer  -  False
メンバーシップ利用時の注意点
 applicationName 要素の指定
  デフォルト -  applicationName="/“
  これを指定することで1つの DB で複数の Web アプ
   リケーションのメンバーシップを管理することも可
   能
  複数の Web アプリケーションで同一のユーザ情報
   を管理することも可能
ロールの基礎
 ロールとは
  ユーザをグループ単位で認証/承認する仕組み
 認証
  ユーザを確認する
  ASP.NET による Windows 認証時、及び Form 認証時
  にロールが有効
 承認
  ページへのアクセス権を確認する
    ロールに対して許可/拒否
ロールのデフォルト設定
 "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 からロールを取得
ロールを有効にする
 利用するための設定
  Web.config の system.web 要素に以下を追加
    <roleManager enabled="true" />


 Windows 認証時の個別 Web アプリケーションのた
 めのロールの拡張
  ADAM ( Active Directory Application Mode )を利用
  SqlRoleProvider を利用
ロールを作成/設定する
 ロールの作成
  Web サイト管理ツールから作成
  プログラム上から作成
    Global.asax を利用する例
      void Application_Start(object sender, EventArgs e)
        {
          if (!Roles.RoleExists("Administrator"))
              Roles.CreateRole("Administrator");
        }
 ロールとユーザを関連づける
  Web サイト管理ツールから設定
  プログラム上から設定
    Roles.AddUsersToRole(new string[]{"shu"}, "Administrator");
ロールを利用する
   フォルダ単位でロールによりアクセスを制限する
       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 が設定されている必要がある
プロファイルの基礎
 プロファイルとは
  サイトに接続した利用者に関する任意の情報を保存/参照で
   きる仕組み
  ログインしていないユーザもプロファイルを利用できる

 デフォルト設定
  "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>
プロファイルを利用する
 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;
   }
匿名ユーザプロファイルを利用する
 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;
     }
プロファイルをどう活用するか
 永続化が必要なデータ
 Session オブジェクトではなくプロファイルを利用
 できないか検討してみる
  サーバ上のメモリを圧迫しない
  強く型付けされたプログラムを記述できる
メンバーシップの将来
 AJAX でのサポート
  メンバーシップベースの認証機能をサポート
  AuthenicationServise クラス
  ProfileService クラス
 IIS 7でのサポート
  IIS7 のベースは ASP.NET に
  メンバーシップも統合
  Web サイト管理ツールと同様の処理が IIS7 の管理ツ
   ールとして利用可能に
  Vista で確認
まとめ
 基礎となるクラスの設定方法を理解する
  設定で動作をカスタマイズできる
 必要であればカスタム Provider クラスを実装して
 置き換え可能
  コントロール類はそのまま利用可能


 メンバーシップはこれからの ASP.NET アプリの基
 礎
  活用していくための知識を身につけておこう

Contenu connexe

Tendances

Windows Server 2012 で管理をもっと自動化する
Windows Server 2012 で管理をもっと自動化するWindows Server 2012 で管理をもっと自動化する
Windows Server 2012 で管理をもっと自動化するjunichi anno
 
[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズJun Terashita
 
WebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft AzureWebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft AzureYoshio Terada
 
Payara Scale (Hazelcast Enterprise) on Azure
Payara Scale (Hazelcast Enterprise) on AzurePayara Scale (Hazelcast Enterprise) on Azure
Payara Scale (Hazelcast Enterprise) on AzureYoshio Terada
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2Yoshi Nagase
 
Infrastructure as code for azure
Infrastructure as code for azureInfrastructure as code for azure
Infrastructure as code for azureKeiji Kamebuchi
 
S15 コマンドラインおよび API による Microsoft Azure の管理
S15 コマンドラインおよび API による Microsoft Azure の管理S15 コマンドラインおよび API による Microsoft Azure の管理
S15 コマンドラインおよび API による Microsoft Azure の管理Microsoft Azure Japan
 
Azure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果wwwAzure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果wwwMasahito Zembutsu
 
Express Web Application Framework
Express Web Application FrameworkExpress Web Application Framework
Express Web Application FrameworkLearningTech
 
[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部haruki ueno
 
Selenium webdriver使ってみようず
Selenium webdriver使ってみようずSelenium webdriver使ってみようず
Selenium webdriver使ってみようずOda Shinsuke
 
Dynamic Access Control 演習編
Dynamic Access Control 演習編Dynamic Access Control 演習編
Dynamic Access Control 演習編junichi anno
 
DBP-008_SQL Server on Azure VM 最新情報とベスト プラクティス
DBP-008_SQL Server on Azure VM 最新情報とベスト プラクティスDBP-008_SQL Server on Azure VM 最新情報とベスト プラクティス
DBP-008_SQL Server on Azure VM 最新情報とベスト プラクティスdecode2016
 
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版junichi anno
 
仕組みがわかるActive Directory
仕組みがわかるActive Directory仕組みがわかるActive Directory
仕組みがわかるActive DirectorySuguru Kunii
 

Tendances (20)

Windows Server 2012 で管理をもっと自動化する
Windows Server 2012 で管理をもっと自動化するWindows Server 2012 で管理をもっと自動化する
Windows Server 2012 で管理をもっと自動化する
 
[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ
 
WebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft AzureWebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft Azure
 
20050917
2005091720050917
20050917
 
Payara Scale (Hazelcast Enterprise) on Azure
Payara Scale (Hazelcast Enterprise) on AzurePayara Scale (Hazelcast Enterprise) on Azure
Payara Scale (Hazelcast Enterprise) on Azure
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2
 
Infrastructure as code for azure
Infrastructure as code for azureInfrastructure as code for azure
Infrastructure as code for azure
 
Web Intents入門
Web Intents入門Web Intents入門
Web Intents入門
 
S15 コマンドラインおよび API による Microsoft Azure の管理
S15 コマンドラインおよび API による Microsoft Azure の管理S15 コマンドラインおよび API による Microsoft Azure の管理
S15 コマンドラインおよび API による Microsoft Azure の管理
 
Azure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果wwwAzure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果www
 
Express Web Application Framework
Express Web Application FrameworkExpress Web Application Framework
Express Web Application Framework
 
test
testtest
test
 
[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部
 
Selenium webdriver使ってみようず
Selenium webdriver使ってみようずSelenium webdriver使ってみようず
Selenium webdriver使ってみようず
 
Dynamic Access Control 演習編
Dynamic Access Control 演習編Dynamic Access Control 演習編
Dynamic Access Control 演習編
 
DBP-008_SQL Server on Azure VM 最新情報とベスト プラクティス
DBP-008_SQL Server on Azure VM 最新情報とベスト プラクティスDBP-008_SQL Server on Azure VM 最新情報とベスト プラクティス
DBP-008_SQL Server on Azure VM 最新情報とベスト プラクティス
 
active directory-slideshare
active directory-slideshareactive directory-slideshare
active directory-slideshare
 
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
 
仕組みがわかるActive Directory
仕組みがわかるActive Directory仕組みがわかるActive Directory
仕組みがわかるActive Directory
 

En vedette (7)

20090328
2009032820090328
20090328
 
20120616
2012061620120616
20120616
 
20110607
2011060720110607
20110607
 
20120425
2012042520120425
20120425
 
20121215
2012121520121215
20121215
 
20140322
2014032220140322
20140322
 
20120128
2012012820120128
20120128
 

Similaire à 20061125

Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~ShuheiUda
 
勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発Kazuki Nakajima
 
SecureAssist Enterprise Portal 導入ガイド
SecureAssist Enterprise Portal 導入ガイドSecureAssist Enterprise Portal 導入ガイド
SecureAssist Enterprise Portal 導入ガイドAsterisk Research, Inc.
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理junichi anno
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hacki7a
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみたYuki Takei
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
Migrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent ProfilerMigrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent ProfilerOshitari_kochi
 
Azure of the_weekend_hobby
Azure of the_weekend_hobbyAzure of the_weekend_hobby
Azure of the_weekend_hobbyNamba Kazuo
 
第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)Hiroki Ishikawa
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識shigeya
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -Yuji Takayama
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライMasanobu Sato
 

Similaire à 20061125 (20)

20090418
2009041820090418
20090418
 
20080524
2008052420080524
20080524
 
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
 
勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発
 
SecureAssist Enterprise Portal 導入ガイド
SecureAssist Enterprise Portal 導入ガイドSecureAssist Enterprise Portal 導入ガイド
SecureAssist Enterprise Portal 導入ガイド
 
20081003
2008100320081003
20081003
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hack
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
Migrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent ProfilerMigrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent Profiler
 
20061122
2006112220061122
20061122
 
Azure of the_weekend_hobby
Azure of the_weekend_hobbyAzure of the_weekend_hobby
Azure of the_weekend_hobby
 
Heroku java
Heroku javaHeroku java
Heroku java
 
[Japan Tech summit 2017] DEP 006
[Japan Tech summit 2017] DEP 006[Japan Tech summit 2017] DEP 006
[Japan Tech summit 2017] DEP 006
 
第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)
 
20090212
2009021220090212
20090212
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
 

Plus de 小野 修司 (17)

20120609
2012060920120609
20120609
 
20100313
2010031320100313
20100313
 
20100224
2010022420100224
20100224
 
20100218 lt
20100218 lt20100218 lt
20100218 lt
 
20100218
2010021820100218
20100218
 
20091207
2009120720091207
20091207
 
20090711
2009071120090711
20090711
 
20090606
2009060620090606
20090606
 
20080630
2008063020080630
20080630
 
20080627 2
20080627 220080627 2
20080627 2
 
20080627 1
20080627 120080627 1
20080627 1
 
20080213
2008021320080213
20080213
 
20080201
2008020120080201
20080201
 
20071204
2007120420071204
20071204
 
20071030
2007103020071030
20071030
 
20070310
2007031020070310
20070310
 
20060419
2006041920060419
20060419
 

20061125

  • 1. 使える! メンバーシップ・ロール・プロファイル どっとねっとふぁん http://dotnetfan.org 小野 修司
  • 2. メンバーシップコントロール入門  Login  - アカウントとパスワードによる認証  CreateUserWizard  - ユーザの登録  ChangePassword  - パスワード変更  PasswordRecovery  - パスワードの再送  LoginStatus  - ログイン状態表示  LoginName  - ログイン名表示  LoginView  - ログイン状態に応じた表示  Web サイト管理ツール  ユーザ、ロールの作成/アクセス規則の設定
  • 3. ノンコーディングでデモシステム  Default.aspx  LoginStatus  LoginName  ChangePassword  Login.aspx  Login  CreateUserWizard  Web サイト管理ツール  認証の種類 - インターネットから  アクセス規則の作成 - 匿名ユーザを拒否  ASPNETDB.MDF  ユーザ情報を格納するデータベース(自動作成)
  • 4. メンバーシップの基礎  メンバーシップとは  ユーザを個別に認証/承認する仕組み  認証  ユーザを確認する  ASP.NET による Form 認証時にメンバーシップが有効  (参考)  ASP.NET における認証の種類  Windows 認証、 Form 認証、 Passport 認証  IIS における認証の種類  匿名アクセス、基本認証、統合 Windows 認証  承認  ページへのアクセス権を確認する  ユーザに対して許可/拒否
  • 5. 認証/承認のタイミング  アプリケーションイベント( HttpApplication クラス)  すべてのリクエストに対して順を追って発生( Http パイプライン)  BeginRequest リクエストに対する処理の開始時に発生  AuthenticateRequest 認証の開始時に発生  PostAuthenticateRequest 認証の終了時に発生  AuthorizeRequest 承認の開始時に発生  PostAuthorizeRequest 承認の終了時に発生  ResolveRequestCache キャッシュの処理の開始時に発生  PostResolveRequestCache キャッシュの処理の終了時に発生  PostMapRequestHandler ハンドラの生成後に発生  AcquireRequestState セッション等の状態の取得時に発生  PostAcquireRequestState セッション等の状態の取得後に発生  PreRequestHandlerExecute ハンドラの実行前に発生          ( Page クラスの処理)  PostRequestHandlerExecute ハンドラの実行後に発生  ReleaseRequestState セッション等の状態の開放時に発生  PostReleaseRequestState セッション等の状態の開放後に発生  UpdateRequestCache キャッシュの状態更新時に発生  PostUpdateRequestCache キャッシュの状態更新後に発生  EndRequest リクエストに対する処理の終了時に発生
  • 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. 承認の設定 • 承認 – 設定例(未認証ユーザを拒否) • <authorization> • <deny users=“?” /> • </authorization> – 許可( allow )/拒否( deny ) – すべてのユーザ” *” /未認証ユーザ” ?” – ロール/ユーザ名の個別指定 – 適用順序は記述順 • <deny roles=“manager”> • <allow roles=“Admins”> • Admins と manager 2つのロールを持つ人は拒否 – フォルダ/ファイル単位で設定可能 • フォルダ毎の web.config • Location 要素の利用
  • 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. メンバーシッププロバイダ • ユーザの認証情報を保存/取得する • プロバイダを置き換えることで様々なデータストアに対応 – 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. メンバーシップ用 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. メンバーシップ用データベース • 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. メンバーシップのカスタマイズ  見た目のカスタマイズ  オートフォーマットの適用  各種プロパティによる変更  テンプレート化して変更  表示項目のカスタマイズ  コントロールのプロパティと web.config の双方の調整が必 要  例: CreateUserWizard コントロールからメールと質問項目 を削除  コントロールの RequireEmail プロパティを False に変更  SqlMemberShipProvider の以下の設定を確認  RequiresUniqueEmail  -  False (デフォルト)  requiresQuestionAndAnswer  -  False
  • 13. メンバーシップ利用時の注意点  applicationName 要素の指定  デフォルト -  applicationName="/“  これを指定することで1つの DB で複数の Web アプ リケーションのメンバーシップを管理することも可 能  複数の Web アプリケーションで同一のユーザ情報 を管理することも可能
  • 14. ロールの基礎  ロールとは  ユーザをグループ単位で認証/承認する仕組み  認証  ユーザを確認する  ASP.NET による Windows 認証時、及び Form 認証時 にロールが有効  承認  ページへのアクセス権を確認する  ロールに対して許可/拒否
  • 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. ロールを有効にする  利用するための設定  Web.config の system.web 要素に以下を追加  <roleManager enabled="true" />  Windows 認証時の個別 Web アプリケーションのた めのロールの拡張  ADAM ( Active Directory Application Mode )を利用  SqlRoleProvider を利用
  • 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. ロールを利用する  フォルダ単位でロールによりアクセスを制限する  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. プロファイルの基礎  プロファイルとは  サイトに接続した利用者に関する任意の情報を保存/参照で きる仕組み  ログインしていないユーザもプロファイルを利用できる  デフォルト設定  "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. プロファイルを利用する  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. 匿名ユーザプロファイルを利用する  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. プロファイルをどう活用するか  永続化が必要なデータ  Session オブジェクトではなくプロファイルを利用 できないか検討してみる  サーバ上のメモリを圧迫しない  強く型付けされたプログラムを記述できる
  • 23. メンバーシップの将来  AJAX でのサポート  メンバーシップベースの認証機能をサポート  AuthenicationServise クラス  ProfileService クラス  IIS 7でのサポート  IIS7 のベースは ASP.NET に  メンバーシップも統合  Web サイト管理ツールと同様の処理が IIS7 の管理ツ ールとして利用可能に  Vista で確認
  • 24. まとめ  基礎となるクラスの設定方法を理解する  設定で動作をカスタマイズできる  必要であればカスタム Provider クラスを実装して 置き換え可能  コントロール類はそのまま利用可能  メンバーシップはこれからの ASP.NET アプリの基 礎  活用していくための知識を身につけておこう