2025-11-28 00:35:46 +09:00
..
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Role-Based Access Control With Authorization Manager

This is a sample ASP.Net (C#) application that uses Authorization Manager.
Authorization Manager is a role-based access control framework which is 
included in Windows Vista, Windows Server 2003 and is available on Windows
2000 and Windows XP via web downloads at Microsoft Download Center.

This sample is a web expense application that will render a UI based upon the
users role membership.  Roles are defined for submitting expenses, approving
expenses and administering application settings.

This sample also contains a sample script (GetRoles.vbs) to enumerate a given
user's roles

System Requirements:

Windows Vista or Better

Additional requirements for using Active Directory as a Policy Store
Windows Server 2003 Active Directory
and
Domain Controller must be at Windows Server 2003 functionality level


Installation

1. Copy the WebExpense directory onto a web server.

2. If using XML as the as a policy store.  Copy AzStore.xml to the root of the
   C:/ drive, e.g. C:\AzStore.xml.  Skip steps 3-5 and go to step 6.
   Note: If you wish to change the location of the store make sure to open the
   Install.vbs file and change the following line:
    pAzManStore.Initialize 1+2, "msxml://C:\AzStore.xml"
   to match the desired path to the AzStore.xml file.

3. If you wish to use Active Directory or ADAM as a policy store.  Uncomment
   the line below the declaration of the variable: 
    HttpContext.Current.Appliction[“AZMAN_STORE”]
   which will contain a sample AD or ADAM connection string.  

4. Open the Install.vbs file and change the following line:
   pAzManStore.Initialize 1+2, "msxml://C:\AzStore.xml"
   to the from "msldap://<AzStore dn>". Make sure the specified container for
   the store exists in AD or ADAM (the store is created in the next step.)

5. Run the script file Install.vbs to create the policy store.

6. In IIS, browse to the WebExpense directory and open the properties window.

7. In IIS select the WebExpense folder (probably in the default web site) and
   right-click and select "convert to applicaion". For this Sample make sure
   the WebExpense applicaion uses the "Classic .Net Web Pool"

8. In order to use Integrated Authorization, open the Authentication settings 
   Icon for the application disable Anonymous Access and enable Windows
   Authentication (this may required installing Windows Authentication from
   the control panel Programs and Features manager under IIS, WWW, Security)

9. Open a web browser and browse to the directory where the sample was
   installed. If this is done on the local machine then you can use:
    http://localhost/WebExpense/index.aspx.

10. If the page loads without errors the sample is installed correctly.


Configuration

A user in the Administer role can modify the following properties through the
web expense application.  Note that these properties are reset when the
application is rebuilt or restarted.
* Max Transactions  Maximum number of expenses that can be submitted before
the application resets the transaction queue.
* Self Approval  If this is checked, users who are both a submitter and an
approver can approve their own expenses.

In addition, the policy store location and the method used to initialize the
client context can be modified in Global.asax.cs.


Troubleshooting

Using Active Directory as an Authorization Store:
1. In order to use Active Directory as an Authorization Store, you must raise
   your Domain Controller to Windows Server 2003 functionality level.  You
   cannot use Active Directory as an Authorization Store on Windows 2000 
   Server unless it is connected to a Windows Server 2003 native domain.

2. If the default permissions on the Active Directory domain have been changed
   in a way such that the security context of the application calling AzMan API
   does not have read access to user account object attributes, then LDAP
   queries used in this sample may fail. An example of this is when a domain
   administrator removes the Authenticated Users group from the
   “Pre-Windows 2000 compatibility Access” group. To enable the application
   account to query user attributes, make the application account a member of
   the “Windows Authorization Access” group or the 
   “Pre-Windows 2000 Compatibility Access” group.
   See Microsoft Knowledge Base article ID: 331951.



“Access to the path C:\WINDOWS\Microsoft.NET\Framework
                 \vx.x.xxx\Temporary ASP.NET Files\WebExpense\... is denied.”

This is due to the restricted permissions of IIS on a domain controller. 
On the first build of an ASP.Net project, files for the project must be created
in the Temporary ASP.NET Files folder which the IIS_WPG does not have write
access to by default.  To solve this give the IIS_WPG read/write permissions
for the Temporary ASP.NET Files folder.


If you experience problems with a newly created user, verify that the user has
the right to logon locally (if you test from a local account.)

Start-> Run -> Type in secpol.msc
In the “security settings” tree expand
 Local Policies
  User Rights Assignment
 
Then give the new user the “Allow Logon Locally” privilege.

If integrated authentication isnt functioning properly, i.e. the new user is
prompted for a username and password when the application is opened, you 
should logoff and log on as the new user.

CS0234: The type or namespace name 'Interop' does not exist in the namespace
'Microsoft'
This may be because the Microsoft.Interop.Security.AzRoles.dll interop assembly
is not in the GAC. This can happen if you are using the 1.2.0.0 version of the
GAC. Due to a bug in WS03 SP1 the 1.2.0.0 version of the interop assembly is
not copied to the GAC. To fix this search on microsoft.com for a hotfix. Or use
the GacUtil.exe tool that is included in the .Net Framework SDK. 
The following command line will register the PIA into the GAC:
  GacUtil.exe -i Microsoft.Interop.Security.AzRoles.dll