Scott Klarenbach
Scott Klarenbach

Reputation: 38721

Advanced .NET Membership/Role Provider

I'm in need of a RoleProvider with the following functionality:

Dynamic Assignment of Roles to Tasks
Authentication / Authorizaiton of IPrincipals based on the dynamically allocated tasks in the system they have privilege to access
Reporting showing who is currently logged in, and other common usage statistics.

I'm pretty sure I'm going to have to roll my own, but wanted to make sure I didn't miss out on something OSS or even from MS.

I'm also using ASP.NET MVC and so my basic plan is to write a custom attribute like: [Authorize(Task=Tasks.DeleteClient)] and place it over the methods that need authorization. Rather than authorizing against the Role, I'll authorize the task against the role based on whatever settings the user has configured in the DB.

Thoughts?

Upvotes: 0

Views: 1197

Answers (2)

Chris Arnold
Chris Arnold

Reputation: 5753

We had a similar issue with one of our systems. The first thing I'd do is create more AuthorizeAttribute classes for your specific tasks - e.g. DeleteClientAuthorize etc. You can then add specific logic into your classes.

As long as you can access the routines that trigger the change of roles for the current user you should be OK. Just call Membership.DeleteCookie() and this will force the next authorisation request to re-query your data store. It's at that point that you can determine what roles are required now.

Upvotes: 0

lomaxx
lomaxx

Reputation: 115763

You might want to check out NetSqlAzMan. It allows you to define tasks and assign them to roles and then authenticate and authorise your IPrincipal objects.

You may need to roll your own security attribute but NetSqlAzMan should help make that a reasonably easy task.

Upvotes: 5

Related Questions