How to integrate in WCF ?
To integrate Visual Guard in your WCF project you have to:
- Add the assemblies of Visual Guard as references of your project.
- Modify the “web.config” or the “app.config” file of your application to integrate the Visual Guard module.
- Integrate Visual Guard in the code of your application.
- Create a Visual Guard repository and declare your application by using the
Visual Guard console. This repository will contain all security items (users,
roles, permissions …) of your application. - Generate the Visual Guard configuration
files by using the Visual Guard console. These configuration files will be
needed to connect your application to the repository. - Grant read/write permissions to the repository.
Integration Demo
Referencing Visual Guard assemblies
- Opens the solution of your project in Visual Studio.
- In the solution explorer, expands the project node.
- Right-click the Project node for the project and select
Add Reference
from the shortcut menu. - In .Net tab, select the 5 assemblies
- Novalys.VisualGuard.Security
- Novalys.VisualGuard.Security.WebForm
- Novalys.VisualGuard.Security.WebService
- Novalys.VisualGuard.Security.<RepositoryType> (Files, SQLServer or Oracle)
- Novalys.VisualGuard.Security.<ApplicationFrameworkType> (Depending on type of application’s framework, whether .NetFramework or .NetCore)
And, then click the Select button, and then click the OK button
![]() |
---|
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 used in your project. |
![]() |
---|
You must add either Novalys.VisualGuard.Security.NetFramework or Novalys.VisualGuard.Security.Core (Depending on type of application’s framework) |

![]() |
---|
Once the Visual Guard assemblies are referenced into project, you need to mark “Copy Local” property to “true” for each assembly. |
- Novalys.VisualGuard.Security contains the main Visual Guard classes.
- Novalys.VisualGuard.Security.Files contains the classes needed to access
to a file based repository. - Novalys.VisualGuard.Security.SQLServer contains the classes needed
to access to a repository stored in a Microsoft SQLServer database (SQLServer 2005
or higher). Available only in Visual Guard Enterprise Edition - Novalys.VisualGuard.Security.Oracle
contains the classes needed to access to a repository stored in an Oracle database
(8i or higher). Available only in Visual Guard Enterprise Edition - Novalys.VisualGuard.Security.WebService contains the classes needed
to application hosting WCF services. You must reference this assembly in all project
hosting WCF services that needs to be secure by Visual Guard. - Novalys.VisualGuard.Security.NetFramework contains all classes required to support .Net Framework applications.
This assembly is needed only if you want to integrate Visual Guard in .net framework applications. - Novalys.VisualGuard.Security.Core contains all classes required to support .Net Core applications.
This assembly is needed only if you want to integrate Visual Guard in .net core applications.
Modifying the “app.config” or “web.config” file of your application
Adding a new service behavior
- Right-click on the ‘Advanced>Service Behaviors’ node in the
tree view. - Select the option ‘New Service Behavior Configuration’.
- Change the name of the behavior (E.g.: VGSecurityBehavior).
<configuration> <system.serviceModel> ... <behaviors> <serviceBehaviors> <behavior name="VGSecurityBehavior"> ... </behavior> </serviceBehaviors> ... </behaviors> </system.serviceModel> </configuration>
- Right-click on the service behavior node
in the tree view. - Select the option ‘Add Behavior Element Extension’.
- Select serviceCredentials and serviceAuthorization
elements then click ok.
<configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="VGSecurityBehavior"> <serviceCredentials> ... </serviceCredentials> <serviceAuthorization> ... </serviceAuthorization> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
- Change the value of UserNamePasswordValidationMode to Custom.
- Change the value of CustomUserNamePasswordValidatorType to
‘Novalys.VisualGuard.Security.WebService.VGUserNameValidator,
Novalys.VisualGuard.Security.WebService’
.
<configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="VGSecurityBehavior"> <serviceCredentials> <usernameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Novalys.VisualGuard.Security.WebService.VGUserNameValidator, Novalys.VisualGuard.Security.WebService" cacheLogonTokens="true" /> </serviceCredentials> <serviceAuthorization> ... </serviceAuthorization> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
- Select the serviceAuthorization node in the tree view.
- Change the value of PrincipalPermissionMode to Custom.
- Change the value of ServiceAuthorizationManagerType to
‘Novalys.VisualGuard.Security.WebService.VGServiceAuthorizationManager,
Novalys.VisualGuard.Security.WebService’
.
<configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="VGSecurityBehavior"> <serviceCredentials> <usernameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Novalys.VisualGuard.Security.WebService.VGUserNameValidator,Novalys.VisualGuard.Security.WebService" cacheLogonTokens="true" /> </serviceCredentials> <serviceAuthorization principalPermissionMode="Custom" serviceAuthorizationManagerType="Novalys.VisualGuard.Security.WebService.VGServiceAuthorizationManager, Novalys.VisualGuard.Security.WebService" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
Configuring the service
- Select the node of the service to configure.
- Select the BehaviorConfiguration property in the right
pane and specify the select the service behavior defined above (E.g.:).
<configuration> <system.serviceModel> <services> <service behaviorConfiguration="VGSecurityBehavior" name="CalculatorService"> <endpoint binding="wsHttpBinding" contract="ICalculatorService" /> </services> .... </system.serviceModel> </configuration>
Integrating Visual Guard in your code
- When you want to restrict the access of a service to a caller
- When you want to apply security actions on a WebService, a custom class or custom control, you must call Visual Guard to set the security of this object.
- When you want to check if a user has a specific permission or a specific role, in
this case you can use
VGSecurityManagerPrincipal
Restricting the access to a service
[VGPrincipalPermission(SecurityAction.Demand, Name="CanMultiply", Type=VGPermissionType.Permission)] public double Multiply(double n1, double n2) { return n1 * n2; }
<VGPrincipalPermission(SecurityAction.Demand, Name:="CanMultiply", Type="VGPermissionType.Permission")> _ Public Function Multiply(Double n1, Double n2) As Double Return n1 * n2 End Function
Securing objects of the application
- Add the Novalys.VisualGuard.SecurityVGISecurable interface to your class.
- Add the call to the SetSecurity method at the end of the constructor.
public class Calculator : ICalculator, VGISecurable { public Calculator() { // .... // Initialization of the object // .... // This call will indicates to Visual Guard that the class must be secured. VGSecurityManager.SetSecurity(this); } public double Multiply(double n1, double n2) { return n1 * n2; } }
Public Class Calculator Implemenents ICalculator, VGISecurable Private Sub New() ' ... ' Initialization of the object ' ... ' This call will indicates to Visual Guard that the class must be secured. VGSecurityManager.SetSecurity(Me) End Sub Public Function Multiply(ByVal n1 as Double, ByVal n2 as Double) As Double Return n1 * n2; End Function End Class
How to filter granted roles
Sub VGSecurityManager_PermissionLoading(ByVal sender As Object, ByVal e As VGPermissionsLoadingEventArgs) If e.Roles.Length > 1 Then Dim selectedRoles(1) As Novalys.VisualGuard.Security.VGGrantedRole For Each role As Novalys.VisualGuard.Security.VGGrantedRole In e.Roles If role.Name = "Administrator" Then selectedRoles(0) = role Exit For Else If role.Name = "Member" Then selectedRoles(0) = role Exit For End If End If Next If selectedRoles(0) Is Nothing Then e.Status = Novalys.VisualGuard.Security.VGAuthorizationStatus.ProcessCanceled Else e.Roles = selectedRoles End If End If End Sub
void VGSecurityManager_PermissionLoading(object sender, VGPermissionsLoadingEventArgs args) { if (e.Roles.Length > 1) { Novalys.VisualGuard.Security.VGGrantedRole[] selectedRoles = new Novalys.VisualGuard.Security.VGGrantedRole[1]; foreach (Novalys.VisualGuard.Security.VGGrantedRole role in e.Roles) { if (role.Name == "Administrator") { selectedRoles[0] = role; break; } else if (role.Name == "Member") { selectedRoles[0] = role; break; } } if (selectedRoles[0] == null) { e.Status = Novalys.VisualGuard.Security.VGAuthorizationStatus.ProcessCanceled; } else { e.Roles = selectedRoles; } } }
How to change default Visual Guard configuration settings
Create a repository and declare the application
Grants Read/Write permission to the Repository
- Open the Explorer.
- Right click the directory containing the repository data then select the menu
“Properties”. - In the “Security” tab, click on the “Add” button and select the user for which
you want to grant the permission (i.e. MACHINE\ASPNET) then click ok. - In the list of permissions, click the option “Modify” then click on the “OK”
button.