[C#]使用 AzMan 管理角色和權限

[C#]使用 AzMan 管理角色和權限

網站我有使用elmah和Glimpse,安全上我設定Admin角色才能存取,否則一律導回登入頁面,

雖然ASP.NET2.0以後提供兩大API(Membership、Role),可以讓你快速建置一整套安全管理機制(預設使用SQL Server Provider),

但依我目前的需求有點殺雞焉用牛刀的FU,所以這篇簡單記錄一下如何使用AzMan來達到我的需求。

 

1.開啟mmc(也可以直接輸入azman.msc)

image

新增嵌入式管理單元。

 

2.新增授權管理員

image

 

3.設定開發人員模式

image

針對授權管理員選取。

 

4.新增授權存放區

image

 

image

我選擇XML方式,並指定一個存放位置。

 

修改檔案存取權限

image

我的Application pool使用該帳號,所以授予該帳號存取權限。

 

5.新增應用程式

image

 

新增角色定義

image

image

 

新增角色指派

image

 

選擇Windows與AD

image

image

 

web.config設定

<connectionStrings>    
   <add name="LocalPolicyStore" connectionString="msxml://D:/webpolicy.xml" />
  </connectionStrings>
 <roleManager 
        enabled="true" 
        cacheRolesInCookie="true" 
        defaultProvider="RoleManagerAzManProvider"
        cookieName=".QEIPROLES" 
        cookiePath="/" 
        cookieTimeout="30" 
        cookieRequireSSL="true" 
        cookieSlidingExpiration="true"
        createPersistentCookie="false" 
        cookieProtection="All">
        <providers>
           <add name="RoleManagerAzManProvider"
                type="System.Web.Security.AuthorizationStoreRoleProvider, System.Web, Version=4.0.0.0, 
                    Culture=neutral, publicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="LocalPolicyStore" 
                applicationName="QEIPApplication"/>
        </providers>
    </roleManager>

 

<location path="Glimpse_debug.axd">
    <system.web>
      <authorization>
        <allow roles="Admin" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>

<location path="elmah_debug.axd">
    <system.web>
      <authorization>     
        <allow roles="Admin"/>  
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

測試是否可以取得相關角色清單和使用者清單

image

後續就可以輕鬆利用這些資料來處理一些基本URL驗證存取。

 

 

參考

Use Authorization Manager (AzMan) For Managing Roles and Permissions

How To: Use Authorization Manager (AzMan) with ASP.NET 2.0