1. Introduction
First, I want to give a general idea about
RBAC. As everybody knows, Role-based access control (RBAC) is a
method of regulating access to
computer or network resources based on the roles of individual users
within an enterprise. In this context, access is the ability of an
individual user to perform a specific task, such as view, create, or
modify a file. Roles are defined according to job competency, authority,
and responsibility within the enterprise.
When properly implemented, RBAC enables users to carry out a wide range
of authorized tasks by dynamically regulating their actions according to
flexible functions, relationships, and constraints. This is in contrast
to conventional methods of access control, which grant or revoke user
access on a rigid, object-by-object basis. In RBAC, roles can be easily
created, changed, or discontinued as the needs of the enterprise evolve,
without having to individually update the privileges for every user.
With
role-based access control, access decisions are based on the
roles that individual users have as part of an organization.
Under the RBAC framework, users are granted membership into roles
based on their competencies and responsibilities in the
organization. The operations that a user is permitted to
perform are
based on the user's role.
So in any system, there are the following entities:
- Users
- Roles
- Resources
Programmer needs to write a lot of code to implement RBAC system.
So I thought of writing an open source SDK which can help the programmer to introduce RBAC system easily...
2. nKnight General Notes
2.1 About
nKnight is a toolkit that can be integrated
seamlessly with your .NET Windows application. I am sure you guys know
what RBAC is, however, in case you forgot...Role-based access
control (RBAC) is a method of giving access to computer application
resources based on the roles of individual users or groups. In this
context, access to a resource is the ability of an individual user to
perform a specific task, such as view, create, delete or modify. Roles
are defined according to authority and responsibility of the user.
2.2 Architecture of nKnight
nKnight contains the following:
- Securitylayer: This will validate user name and password and activate your RBAC system.
- Datalayer: This will query your RBAC database. And also creates the tables for the first time.
- nKnight Controls: Set of controls, which will automatically tell you that the logged in user has access on the control or not.
- nKnight forms: Those forms will help to create user, role and resources and also map it.
2.3 How to Use nKnight into Your Project
There are the following .dll files,
- nKnight.dll
- nKnightD.dll
- nKnightControls.dll
You can add DLLs 1 and 2 from “Add Reference” in Visual Studio. And
if you want to use nKnight controls, then from toolbox, you have to choose
the 3rd DLL.
Now you have to tell nKnight which database you are using by sending an
open connection to the nKnight datalayer. The database holds the matrix
of the roles and their authorizations. The first thing that you need to
have is a MySQL installation and access to the database. Open up a valid
connection with the following piece of code (change data values of the
following fields, i. e., SERVER
, PORT
, DATABASE
, USER
and PASSWORD
):
string conStr = "DRIVER={MySQL ODBC 5.1
Driver};SERVER=localhost;PORT=3306;DATABASE=RBAC;USER=root;PASSWORD=xxx;OPTION=3";
IDbConnection con = (IDbConnection)new OdbcConnection(conStr);
con.Open();
Now you can proceed for initializing the nKnight
datalayer by sending this kind of an open connection.
DataLayer dbl = new DataLayer(con, DataLayer.DatabaseType.MySql);
con
here is a variable, change it with an
actual connection string. User won't be able to understand what con
is then. Or else, you can declare con
in the previous line.
Remember: This release only accepts Mysql database.
After this, you will need to activate nKnight
security layer by
sending this datalayer object and user name and password. Confused!!! Ok
don’t worry, I will show you how:
bool d = SecurityPrincipal.InitSecuritySystem(dbl, "Admin", "Admin");
Once you’ve set up security layer, then just drag and drop nKnight
controls from toolbox into your forms. System will automatically
generate one unique id for every control and you can access it from
“GroupUniqueId
” property.
3. It's An Open Source Project
I
have introduced this nKnight SDK as an open source so that programmer
can freely use this and can enrich the SDK. I know that without your
valuable suggestions, this SDK will be stuck into 1.0.0, so please go
ahead......
4. Download Link
So happy coding and help me to enrich this SDK...