狠狠撸

狠狠撸Share a Scribd company logo
使える!
メンバーシップ?ロール?プロファイル
     どっとねっとふぁん
      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 アプリの基
 礎
 ? 活用していくための知識を身につけておこう

More Related Content

What's hot (20)

Windows Server 2012 で管理をもっと自動化する
Windows Server 2012 で管理をもっと自動化するWindows Server 2012 で管理をもっと自動化する
Windows Server 2012 で管理をもっと自動化する
junichi anno
?
摆础濒蹿谤别蝉肠辞闭ドキュメントライブラリの鲍滨カスタマイズ
摆础濒蹿谤别蝉肠辞闭ドキュメントライブラリの鲍滨カスタマイズ摆础濒蹿谤别蝉肠辞闭ドキュメントライブラリの鲍滨カスタマイズ
摆础濒蹿谤别蝉肠辞闭ドキュメントライブラリの鲍滨カスタマイズ
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 Azure
Yoshio Terada
?
Payara Scale (Hazelcast Enterprise) on Azure
Payara Scale (Hazelcast Enterprise) on AzurePayara Scale (Hazelcast Enterprise) on Azure
Payara Scale (Hazelcast Enterprise) on Azure
Yoshio 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.2
Yoshi Nagase
?
Infrastructure as code for azure
Infrastructure as code for azureInfrastructure as code for azure
Infrastructure as code for azure
Keiji Kamebuchi
?
Web Intents入門
Web Intents入門Web Intents入門
Web Intents入門
Shumpei Shiraishi
?
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 を使ってみた結果www
Masahito Zembutsu
?
Express Web Application Framework
Express Web Application FrameworkExpress Web Application Framework
Express Web Application Framework
LearningTech
?
test
testtest
test
stucon
?
[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
?
active directory-slideshare
active directory-slideshareactive directory-slideshare
active directory-slideshare
Trainocate Japan, Ltd.
?
勉強会キット 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 Directory
Suguru Kunii
?
Windows Server 2012 で管理をもっと自動化する
Windows Server 2012 で管理をもっと自動化するWindows Server 2012 で管理をもっと自動化する
Windows Server 2012 で管理をもっと自動化する
junichi anno
?
摆础濒蹿谤别蝉肠辞闭ドキュメントライブラリの鲍滨カスタマイズ
摆础濒蹿谤别蝉肠辞闭ドキュメントライブラリの鲍滨カスタマイズ摆础濒蹿谤别蝉肠辞闭ドキュメントライブラリの鲍滨カスタマイズ
摆础濒蹿谤别蝉肠辞闭ドキュメントライブラリの鲍滨カスタマイズ
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 Azure
Yoshio Terada
?
Payara Scale (Hazelcast Enterprise) on Azure
Payara Scale (Hazelcast Enterprise) on AzurePayara Scale (Hazelcast Enterprise) on Azure
Payara Scale (Hazelcast Enterprise) on Azure
Yoshio 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.2
Yoshi Nagase
?
Infrastructure as code for azure
Infrastructure as code for azureInfrastructure as code for azure
Infrastructure as code for azure
Keiji 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 を使ってみた結果www
Masahito Zembutsu
?
Express Web Application Framework
Express Web Application FrameworkExpress Web Application Framework
Express Web Application Framework
LearningTech
?
[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 Directory
Suguru Kunii
?

Similar to 20061125 (20)

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_hack
i7a
?
自作苍辞诲别.箩蝉フレームワークと苍驳颈苍虫を使ってラジオサイトを作ってみた
自作苍辞诲别.箩蝉フレームワークと苍驳颈苍虫を使ってラジオサイトを作ってみた自作苍辞诲别.箩蝉フレームワークと苍驳颈苍虫を使ってラジオサイトを作ってみた
自作苍辞诲别.箩蝉フレームワークと苍驳颈苍虫を使ってラジオサイトを作ってみた
Yuki Takei
?
厂别补蝉补谤プロジェクト彻底攻略
厂别补蝉补谤プロジェクト彻底攻略厂别补蝉补谤プロジェクト彻底攻略
厂别补蝉补谤プロジェクト彻底攻略
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 Profiler
Oshitari_kochi
?
Azure of the_weekend_hobby
Azure of the_weekend_hobbyAzure of the_weekend_hobby
Azure of the_weekend_hobby
Namba Kazuo
?
Heroku java
Heroku javaHeroku java
Heroku java
Kazuyuki Kawamura
?
[Japan Tech summit 2017] DEP 006
[Japan Tech summit 2017] DEP 006[Japan Tech summit 2017] DEP 006
[Japan Tech summit 2017] DEP 006
Microsoft Tech Summit 2017
?
第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
?
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_hack
i7a
?
自作苍辞诲别.箩蝉フレームワークと苍驳颈苍虫を使ってラジオサイトを作ってみた
自作苍辞诲别.箩蝉フレームワークと苍驳颈苍虫を使ってラジオサイトを作ってみた自作苍辞诲别.箩蝉フレームワークと苍驳颈苍虫を使ってラジオサイトを作ってみた
自作苍辞诲别.箩蝉フレームワークと苍驳颈苍虫を使ってラジオサイトを作ってみた
Yuki Takei
?
厂别补蝉补谤プロジェクト彻底攻略
厂别补蝉补谤プロジェクト彻底攻略厂别补蝉补谤プロジェクト彻底攻略
厂别补蝉补谤プロジェクト彻底攻略
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 Profiler
Oshitari_kochi
?
Azure of the_weekend_hobby
Azure of the_weekend_hobbyAzure of the_weekend_hobby
Azure of the_weekend_hobby
Namba 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
?

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 アプリの基 礎 ? 活用していくための知識を身につけておこう