|
|
Security
|
public abstract class SecurityProviderBase : ISecurityProvider, IPersistSettings
The SecurityProviderBase type exposes the following members.
| Name | Description | |
|---|---|---|
| SecurityProviderBase | Initializes a new instance of the security provider. |
| Name | Description | |
|---|---|---|
| ApplicationName | Gets or sets the name of the application being secured as defined in the backend security datastore. | |
| AuthenticationFailureReason | Gets or allows derived classes to set an authentication failure reason. | |
| CanChangePassword | Gets a boolean value that indicates whether ChangePassword(String, String) operation is supported. | |
| CanRefreshData | Gets a boolean value that indicates whether RefreshData operation is supported. | |
| CanResetPassword | Gets a boolean value that indicates whether ResetPassword(String) operation is supported. | |
| ConnectionString | Gets or sets the connection string to be used for connection to the backend security datastore. | |
| IsRedirectRequested | Gets the flag that indicates whether the user needs to be redirected after the Authentication attempt. | |
| IsUserAuthenticated | Gets the flag that indicates whether the user was authenticated during the last authentication attempt. | |
| LogEvent | Gets or sets the LogEventFunctionSignature to use for logging security events for the SecurityProviderBase implementation. | |
| PassthroughPrincipal | Gets or sets the principal used for passthrough authentication. | |
| Password | Gets or sets SecurePassword as clear text password. | |
| PersistSettings | Gets or sets a boolean value that indicates whether security provider settings are to be saved to the config file. | |
| RequestedRedirect | Gets the URI that user will be redirected to if IsRedirectRequested is set. | |
| SecurePassword | Gets or sets the password as a SecureString. | |
| SettingsCategory | Gets or sets the category under which security provider settings are to be saved to the config file if the PersistSettings property is set to true. | |
| UserData | Gets the UserData object containing information about the user. |
| Name | Description | |
|---|---|---|
| Authenticate | When overridden in a derived class, authenticates the user. | |
| ChangePassword | When overridden in a derived class, changes user password in the backend datastore. | |
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object) | |
| GetType | Gets the Type of the current instance. (Inherited from Object) | |
| GetUserRoles | Gets a list of Roles for this user for a specified ApplicationId. | |
| LoadSettings | Loads saved security provider settings from the config file if the PersistSettings property is set to true. | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object) | |
| RefreshData | When overridden in a derived class, refreshes the UserData from the backend datastore. | |
| ResetPassword | When overridden in a derived class, resets user password in the backend datastore. | |
| SaveSettings | Saves security provider settings to the config file if the PersistSettings property is set to true. | |
| ToString | Returns a string that represents the current object. (Inherited from Object) | |
| TranslateRedirect | Performs a translation of the default login page to a different endpoint. | |
| TranslateRole | Performs a translation of the specified user role. |
| Name | Description | |
|---|---|---|
| DefaultApplicationName | Specifies the default value for the ApplicationName property. | |
| DefaultConnectionString | Specifies the default value for the ConnectionString property. | |
| DefaultPersistSettings | Specifies the default value for the PersistSettings property. | |
| DefaultSettingsCategory | Specifies the default value for the SettingsCategory property. |
| Name | Description | |
|---|---|---|
| GetEnumValueOrDefault |
Gets the enumeration constant for value, if defined in the enumeration, or a default value.
(Defined by EnumExtensions) | |
| GetEnumValueOrDefaultT |
Gets the enumeration constant for this value, if defined in the enumeration, or a default value.
(Defined by EnumExtensions) |
using System.Data; using System.IO; using GSF; using GSF.Data; using GSF.IO; using GSF.Security; namespace CustomSecurity { public class FlatFileSecurityProvider : SecurityProviderBase { private const int LeastPrivilegedLevel = 5; public FlatFileSecurityProvider(string username) : base(username) { } public override bool RefreshData() { // Check for a valid username. if (string.IsNullOrEmpty(UserData.Username)) return false; // Check if a file name is specified. if (string.IsNullOrEmpty(ConnectionString)) return false; // Check if file exist on file system. string file = FilePath.GetAbsolutePath(ConnectionString); if (!File.Exists(file)) return false; // Read the data from the specified file. DataTable data = File.ReadAllText(file).ToDataTable(",", true); DataRow[] user = data.Select(string.Format("Username = '{0}'", UserData.Username)); if (user.Length > 0) { // User exists in the specified file. UserData.IsDefined = true; UserData.Password = user[0]["Password"].ToNonNullString(); for (int i = LeastPrivilegedLevel; i >= int.Parse(user[0]["Level"].ToNonNullString()); i--) { UserData.Roles.Add(i.ToString()); } } return true; } public override bool Authenticate(string password) { // Compare password hashes to authenticate. return (UserData.Password == SecurityProviderUtility.EncryptPassword(password)); } } }
<?xml version="1.0"?> <configuration> <configSections> <section name="categorizedSettings" type="GSF.Configuration.CategorizedSettingsSection, GSF.Core" /> </configSections> <categorizedSettings> <securityProvider> <add name="ApplicationName" value="SEC_APP" description="Name of the application being secured as defined in the backend security datastore." encrypted="false" /> <add name="ConnectionString" value="Security.csv" description="Connection string to be used for connection to the backend security datastore." encrypted="false" /> <add name="ProviderType" value="CustomSecurity.FlatFileSecurityProvider, CustomSecurity" description="The type to be used for enforcing security." encrypted="false" /> <add name="IncludedResources" value="*=*" description="Semicolon delimited list of resources to be secured along with role names." encrypted="false" /> <add name="ExcludedResources" value="" description="Semicolon delimited list of resources to be excluded from being secured." encrypted="false" /> <add name="NotificationSmtpServer" value="localhost" description="SMTP server to be used for sending out email notification messages." encrypted="false" /> <add name="NotificationSenderEmail" value="sender@company.com" description="Email address of the sender of email notification messages." encrypted="false" /> </securityProvider> </categorizedSettings> </configuration>