To integrate Visual Guard in your application you must:
This demo shows how to integrate Visual Guard in WinForm application
In order to use Visual Guard, you must add references to Visual Guard assemblies:
Note: In the list of assemblies, Visual Studio can display different versions of the Visual Guard assemblies. You must select the assembly corresponding to the version of the framework and target (x64, x32, or Any CPU) used in your project.
If the assemblies does not appear in this list you can use the Browse tab and select them in the directory <Visual Guard installation directory>/bin/ for respective target platform .net applications (x86, x64 or Any CPU). <Visual Guard installation directory>/bin/ contains 'Any CPU' assemblies.
Description of Visual Guard assemblies:
There are 2 main classes in Visual Guard:
Novalys.VisualGuard.Security.VGSecurityManager: This class provides the main access point for interacting with Visual Guard. It provides authentication and authorization features, it allows to set the security of the object of your application.
Novalys.VisualGuard.Security.WinForm.VGLoginForm: This class is the default authentication form provided by Visual Guard. This class is very easy to use and is fully integrated with Visual Guard. You can use your own form, to authenticate a user. In this case you must call the Authenticate method provided by the VGSecurityManager class.
You must load the security before all other code. In this case you will be sure to set the security of all the objects of your application. If you load your main form before authenticating a user, Visual Guard will not automatically set the security of this form. In this case, you must set the security of this form after loading the permissions of the user (see the method VGSecurityManager.SetSecurity).
It is recommended to use the event MyApplication_Startup in order to load the security. When the user is not authenticated or authorized, you should set the property e.Cancel to true in order to stop the application. The following sample demonstrates how to use the login form provided by Visual Guard to authenticate the user.
Imports Novalys.VisualGuard.Security.WinForm
Imports System.Reflection
Imports Microsoft.VisualBasic.ApplicationServices
Namespace
My
Partial Friend Class
MyApplication
Private Sub
MyApplication_Startup(ByVal
sender As
Object,
ByVal e
As StartupEventArgs)
Handles
Me.Startup
Dim form As
VGLoginForm =
New VGLoginForm()
If form.ShowDialog() <> DialogResult.OK Then
e.Cancel
=
True
Return
End If
End Sub
End Class
End Namespace
If you prefer, you can use the default login form provided by Visual Guard. In this case you can use the following code:
[C#] Novalys.VisualGuard.Security.WinForm.VGLoginForm login = new Novalys.VisualGuard.Security.WinForm.VGLoginForm(); login.HeaderDescription = login.HeaderDescription + Environment.NewLine + "(the default user is \"jsmith\" and its password \"pwd\")"; login.UserName = "jsmith"; if (login.ShowDialog() == DialogResult.OK) { login.Dispose(); Application.Run(new MDIForm()); }
[Visual Basic] Dim login As New Novalys.VisualGuard.Security.WinForm.VGLoginForm login.HeaderDescription = login.HeaderDescription + Environment.NewLine + "(the default user is ""jsmith"" and its password ""pwd"")" login.UserName = "jsmith" If login.ShowDialog() = DialogResult.OK Then login.Dispose() Application.Run(New MDIForm) End If
The following example demonstrates how to authenticate a user. This code can be inserted in the click event of the OK button in a login form:
[C#] this.DialogResult = Dialog.None VGAuthenticationState state = VGSecurityManager.Authenticate(user.Text, password.Text); if (state.IsFailed) { if (state.IsCanceled) return; if (state.IsCredentialInvalid) { if (state.IsLastBadLogin) { MessageBox.Show("Invalid user or password. The next bad login will lock your account."); } else { MessageBox.Show("Invalid user or password"); } } else if (state.IsUserNotAuthorized) { MessageBox.Show("user not authorized to log on the application"); } else if (state.IsUserAccountExpired) { MessageBox.Show("your account is no more valid. Contact your administrator"); } else if (state.IsUserAccountNotYetAvailable) { MessageBox.Show("your account is not yet available."); } else if (state.IsUserAccountLockedOut) { MessageBox.Show("your account is locked. Contact your administrator."); } else if (state.MustChangePasswordAtNextLogon) { MessageBox.Show("Your password is not secure enough. You must change it.") ChangePassword form = New ChangePassword(); if (form.ShowDialog() == DialogResult.OK) { passwordTextBox.Text = form.NewPassword; goto Reauthenticate; } } } else { this.DialogResult = Dialog.OK if (!state.IsPasswordSecure) { MessageBox.Show("Your password is not secure enough. You must change it."); ChangePassword form = new ChangePassword(); form.ShowDialog(); } }
[Visual Basic] Reauthenticate: Me.DialogResult = DialogResult.None Dim state As VGAuthenticationState = VGSecurityManager.Authenticate(userTextBox.Text, passwordTextBox.Text) If state.IsFailed Then If state.IsCanceled Then Return If state.IsCredentialInvalid Then If state.IsLastBadLogin Then MessageBox.Show("Invalid user or password. The next bad login will lock your account.") Else MessageBox.Show("Invalid user or password") End If ElseIf state.IsUserNotAuthorized Then MessageBox.Show("user not authorized to log on to the application") ElseIf state.IsUserAccountExpired Then MessageBox.Show("your account is no more valid. Contact your administrator") ElseIf state.IsUserAccountNotYetAvailable Then MessageBox.Show("your account is not yet available.") ElseIf state.IsUserAccountLockedOut Then MessageBox.Show("your account is locked. Contact your administrator.") ElseIf state.MustChangePasswordAtNextLogon Then ' The user must change the password before reauthenticating MessageBox.Show("You must change your password") Dim form As ChangePassword = New ChangePassword If form.ShowDialog() = DialogResult.OK Then passwordTextBox.Text = form.NewPassword GoTo Reauthenticate End If End If Else Me.DialogResult = DialogResult.OK If Not state.IsPasswordSecure Then MessageBox.Show("Your password is not secure enough. You must change it.") Dim form As ChangePassword = New ChangePassword form.ShowDialog() End If End If
This example demonstrates how to use the Windows logon to identify the user:
[Visual Basic] Dim state As VGAuthorizationState state = VGSecurityManager.LoadSecurity (System.Security.Principal.WindowsIdentity.GetCurrent()) If state.IsFailed Then If state.IsUserNotFound Then MessageBox.Show("Your are not declared in the security repository") ElseIf state.IsUserNotAuthorized Then MessageBox.Show("Your are not authorized to log on to this application") End If Else Application.Run(New MDIForm) End If
[C#] VGAuthorizationState state = VGSecurityManager.LoadSecurity (System.Security.Principal.WindowsIdentity.GetCurrent()); if (state.IsFailed) { if (state.IsUserNotFound) { MessageBox.Show("Your are not declared in the security repository"); } elseif (state.IsUserNotAuthorized) { MessageBox.Show("Your are not authorized to log on to this application"); } } else { Application.Run(new MDIForm()); }
If you need to secure only form class in your application, you do not need to add more code. Visual Guard can detect automatically all form creations and sets the security automatically. But, if you want to secure other types of class, you must do the following:
Add the Novalys.VisualGuard.Security.VGISecurable interface to your class.
Add the call to the VGSecurityManager.SetSecurity method at the end of the constructor.