[C#]使用 AzMan 管理角色和權限
網站我有使用elmah和Glimpse,安全上我設定Admin角色才能存取,否則一律導回登入頁面,
雖然ASP.NET2.0以後提供兩大API(Membership、Role),可以讓你快速建置一整套安全管理機制(預設使用SQL Server Provider),
但依我目前的需求有點殺雞焉用牛刀的FU,所以這篇簡單記錄一下如何使用AzMan來達到我的需求。
1.開啟mmc(也可以直接輸入azman.msc)
新增嵌入式管理單元。
2.新增授權管理員
3.設定開發人員模式
針對授權管理員選取。
4.新增授權存放區
我選擇XML方式,並指定一個存放位置。
修改檔案存取權限
我的Application pool使用該帳號,所以授予該帳號存取權限。
5.新增應用程式
新增角色定義
新增角色指派
選擇Windows與AD
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>
測試是否可以取得相關角色清單和使用者清單
後續就可以輕鬆利用這些資料來處理一些基本URL驗證存取。
參考
Use Authorization Manager (AzMan) For Managing Roles and Permissions