diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 0256759..0514e89 100644 Binary files a/.vs/slnx.sqlite and b/.vs/slnx.sqlite differ diff --git a/docs/install/security/index.html b/docs/install/security/index.html index 479b359..0d5c82a 100644 --- a/docs/install/security/index.html +++ b/docs/install/security/index.html @@ -392,6 +392,21 @@ + +
  • @@ -1063,6 +1078,21 @@ + +
  • @@ -1133,6 +1163,9 @@

    Folder Permissions

  • You want to configure a separate account to run self-updates under, if that account is not a local administrator.
  • +

    Application Permissions

    +

    In addition to folder permissions, the account used for updating, whether a domain admin or custom account, +must be provided permissinos to be able to manage IIS sites or services on the web host.

    Encryption

    The application encrypts sensitive database data such as passwords. Blazam uses the EncryptionString from the appSettings.json configuration file

    diff --git a/docs/search/search_index.json b/docs/search/search_index.json index 8ee8895..c65b26f 100644 --- a/docs/search/search_index.json +++ b/docs/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Blazam","text":"

    Main Site

    Blazam is a powerful, free, web-based Active Directory management portal.

    Enable you and your users to manage legacy Active Directory in a modern way.

    "},{"location":"#environment-requirements","title":"Environment Requirements","text":"

    Sorry

    This app is simply not designed for organizations that clump all their users into a select few OU's. Having a well defined OU structure is imperitive to the operation of this application.

    Sure you can use it, but the granularity of your delegation control is proportional to the granularity of your OU tree.

    Continuing

    If you're looking for an app that delegates to groups instead of OU's, good luck. The technical reality of LDAP and Active Directory prohibit any tolerable experience delegating groups to groups.

    "},{"location":"#open-source","title":"Open Source","text":"

    Blazam and it's documentation are open source. Contributions are encouraged.

    "},{"location":"license/","title":"Blazam License Agreement","text":"

    Copyright (c) 2023 Blazam

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    This license is only applicable to versions of the Software that included this license in the installed software directory or source code. Future versions including a different license will not be subject to this agreement and will operate entirely under the included license of said future version of the Software.

    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    "},{"location":"privacy/","title":"Privacy Policy for Blazam","text":"

    Last updated: March 15, 2023

    "},{"location":"privacy/#introduction","title":"Introduction","text":"

    This Privacy Policy describes how Blazam (\"we\", \"us\", or \"our\") collects, uses, shares, and protects your personal information when you use our web app Blazam (\"the Software\").

    By using the Software, you agree to the collection and use of your personal information in accordance with this Privacy Policy.

    "},{"location":"privacy/#what-information-do-we-collect","title":"What information do we collect?","text":"

    We collect information that you provide to us when you use the Software, such as your name, email address, password, and any other information that you choose to provide.

    We also collect information that is automatically generated when you use the Software, such as your IP address, browser type, device type, operating system, pages visited, time spent on the Software, and other statistical data.

    We use Google Analytics 4 to help us analyze how users use the Software. Google Analytics 4 collects information such as how often users visit the Software, what pages they visit, and what other sites they used prior to coming to the Software. Google Analytics 4 does not collect your name or other identifying information. We do not combine the information collected by Google Analytics 4 with any personally identifiable information. You can learn more about how Google collects and processes data at https://policies.google.com/technologies/partner-sites.

    "},{"location":"privacy/#how-do-we-use-your-information","title":"How do we use your information?","text":"

    We use your information for the following purposes:

    "},{"location":"privacy/#how-do-we-share-your-information","title":"How do we share your information?","text":"

    We do not sell or rent your personal information to third parties. We may share your personal information with third parties in the following circumstances:

    "},{"location":"privacy/#what-are-your-rights","title":"What are your rights?","text":"

    You have certain rights regarding your personal information that we collect and process. Depending on where you live, these rights may include:

    To exercise any of these rights, please contact us at support@blazam.org. We will respond to your request within a reasonable timeframe.

    "},{"location":"privacy/#how-do-we-protect-your-information","title":"How do we protect your information?","text":"

    We take reasonable measures to protect your personal information from unauthorized access,use, disclosure, alteration, or destruction. However, no method of transmission or storage is completely secure and we cannot guarantee the absolute security of your personal information.

    We store your personal information for as long as it is necessary to provide the Software and fulfill the purposes outlined in this Privacy Policy, unless a longer retention period is required or permitted by law.

    "},{"location":"privacy/#how-do-we-use-cookies-and-other-tracking-technologies","title":"How do we use cookies and other tracking technologies?","text":"

    We use cookies and other tracking technologies to collect and store information about your preferences and activity on the Software. Cookies are small files that are placed on your device when you visit a website. They help us recognize you and remember your settings when you return to the Software. You can manage your cookie preferences in your browser settings, but please note that some features of the Software may not function properly if you disable or reject cookies.

    We also use web beacons, pixels, tags, and scripts to collect and track information about how you interact with the Software and our email communications. These technologies help us measure the effectiveness of our marketing campaigns and improve our Software.

    "},{"location":"privacy/#do-we-link-to-other-websites","title":"Do we link to other websites?","text":"

    The Software may contain links to other websites that are not operated by us. We are not responsible for the content or privacy practices of those websites. We encourage you to review the privacy policies of any third-party websites that you visit.

    "},{"location":"privacy/#how-do-we-update-this-privacy-policy","title":"How do we update this Privacy Policy?","text":"

    We may update this Privacy Policy from time to time to reflect changes in our data practices or applicable laws. We will notify you of any material changes by posting the updated Privacy Policy on the Software or by sending you an email notification. Your continued use of the Software after we post the updated Privacy Policy constitutes your acceptance of the new Privacy Policy.

    "},{"location":"privacy/#how-can-you-contact-us","title":"How can you contact us?","text":"

    If you have any questions or comments about this Privacy Policy or our data practices, please contact us at:

    Jacobsen Productions USA Email: support@blazam.org

    "},{"location":"admin/fields/","title":"Fields","text":"

    The fields configuration section allows for the definition of custom schema attributes in your Active Directory environment.

    Once a field is defined it will become available for delegation in Permissions.

    "},{"location":"admin/fields/#display-name","title":"Display Name","text":"

    This is the label that will be shown for this attribute in Blazam. It can be in your localized language for your convenience.

    "},{"location":"admin/fields/#field-name","title":"Field Name","text":"

    This is the name of the attribute as shown on the attributes tab of the object in Active Directory.

    Remember you need to enable Advanced View in ADUC to see the attributes tab.

    "},{"location":"admin/fields/#field-type","title":"Field Type","text":"

    This should be set based on the type of data the the attribute stores. Check the attribute values to determine the best match. If the value does not show in Blazam try a different type.

    "},{"location":"admin/fields/#object-types","title":"Object Types","text":"

    The final section of defining a field is the selection of object types. Check whichever types the attribute is used on.

    "},{"location":"admin/initialSetup/","title":"Initial Setup","text":"

    After installing Blazam, open a browser to your published website.

    Upon first launch, the application will enter an installation wizard to guide you in completing the initial configuration.

    "},{"location":"admin/initialSetup/#setup-wizard","title":"Setup Wizard","text":""},{"location":"admin/initialSetup/#database","title":"Database","text":""},{"location":"admin/initialSetup/#pre-requisites-excluding-sqlite","title":"Pre-requisites (Excluding Sqlite)","text":"

    Tip

    The web installer ensures the prerequisites are fulfilled before allowing installation.

    The database page confirms that the settings you configured in appSettings.json (or as performed by the web installer) are correct and a connection to the database is successful.

    You can then \"install\" the database, which will set up all the necessary tables and seed data.

    "},{"location":"admin/initialSetup/#authentication","title":"Authentication","text":"

    The authentication install page allows you to set up your built-in admin password.

    This account is provided to allow login even when no connection to Active Directory can be made.

    "},{"location":"admin/initialSetup/#active-directory","title":"Active Directory","text":"

    This is the most important of first launch steps.

    Server - This can be your domain name, but if that doesn't work pick a domain controller to connect to and use it's DNS name.

    Port - The port to connect to.

    Username - The account name excluding the domain. (eg:blazam) This account should have administrative permissions for whatever scope you intend to use the application for.

    Password - The password for the domain account.

    Use TLS - Whether to use TLS when connecting. For internal networks this is optional. It is highly recommended if you are communicating to your domain over the internet.

    FQDN - The fully qualified domain name of your Active Directory domain.

    Base DN - The base organizational unit distinguished name from where to begin scoping the application. Any OU's above this DN are not available to Blazam.

    Info

    At the bottom of the page is a connection status panel that will show you the state of the connection as you make changes.

    "},{"location":"admin/initialSetup/#finalize-install","title":"Finalize Install","text":"

    After finalizing install you will be brought to the login page. Enter the admin username and the password you set during the initial setup.

    "},{"location":"admin/notifications/","title":"Notifications","text":"

    Blazam offers a flexible notification system for both in-app and email notifications.

    "},{"location":"admin/notifications/#requirements","title":"Requirements","text":"

    In order for email notifications to go out, email must be enabled in Configure -> Settings.

    "},{"location":"admin/notifications/#behavior","title":"Behavior","text":"

    Notification settings, much like permissions, are applied to OU's and propagate down the OU tree unless a Block is placed at a lower level.

    In-app and email notification types can be included/excluded together or independently.

    "},{"location":"admin/notifications/#user-access","title":"User Access","text":"

    All users can manage their own notification settings via the User Button in the top right of Blazam.

    "},{"location":"admin/notifications/#admin-management","title":"Admin Management","text":"

    Super-admins can manage all other users notifications via the Configure -> Notifications feature.

    "},{"location":"admin/permissions/","title":"Permissions","text":"

    Permissions in Blazam differ from Active Directory in one major (and extremely helpful) way.

    Feature Active Directory Blazam Reusable ACL's Each ACL is unique for each OU Create one type of access and reuse that list for any number of OU's ACL Naming ACL's are simply a list of properties in the security tab with no real grouping or de-granularization Named ACL's allow for quick identification of access and it's source as well as allowing the creation of role based ACL's ACL inheritance ACL's at higher level OU's propagate down except for overriding deny's Blazam behaves the same as Active Directory in this regard

    TLDR

    Blazam adds a layer of abstraction to Active Directory permissions. By including an Access Level layer between the OU permissions and the group assigned, you can create a single ACL rule and reuse it for as many groups on as many OU's as you'd like.

    The Access Level's you define can be reused or combined to create exactly the configuration you desire.

    Example

    A group HR could be given the Access Level Read Users (which allows only read access to usr demographics fields) and the Read Groups Access Level to the OU's Company/Marketing and Company/IT while also receiving Rename Users for the Company/Marketing OU as well as the Deny Group Read Access Level for the Company/IT OU.

    This will result in a member of HR to be able to read user demographics in Company/Marketing and Company/IT while being able to read the groups a user is a member of, only if the group is under the Company/Marketing OU.

    They will also be able to rename users under Company/Marketing

    Note

    Permissions that are applied inherit fully down the OU tree unless a Deny permission is set at a lower level.

    "},{"location":"admin/permissions/#delegates","title":"Delegates","text":"

    The core element of the permission system in Blazam is the \"Delegate\".

    A \"Delegate\" can be any group or user.

    Any \"Delegate\" added will allow that user or members of that group to log into the application.

    Nested group members are counted.

    "},{"location":"admin/permissions/#access-levels","title":"Access Levels","text":"

    Access Levels improve upon the default permission system found in Active Directory.

    "},{"location":"admin/permissions/#parameters","title":"Parameters","text":""},{"location":"admin/permissions/#name","title":"Name","text":"

    You can name your Access Levels however you'd like.

    "},{"location":"admin/permissions/#object-permissions","title":"Object Permissions","text":"

    Permissions are split between different Active Directory object types. You can set different permissions for groups from users, computers, or OU's within the same OU, or any combination therein.

    "},{"location":"admin/permissions/#field-permissions","title":"Field Permissions","text":"

    Under each object type allowed, you can choose which fields will be denied, readable, or editable.

    "},{"location":"admin/permissions/#group-membership-access","title":"Group Membership Access","text":"

    Group membership control in Blazam is tied to the group and read permissions.

    "},{"location":"admin/permissions/#assignunassing-action","title":"Assign/Unassing Action","text":"

    The delegate user must have Assign/Unassign action permissions provided to the parent group in order to assign users or groups to it.

    "},{"location":"admin/permissions/#read-usersgroups","title":"Read Users/Groups","text":"

    The final permission that must be assigned to delegates is read access to users or groups to be able to add as a member of the parent group

    "},{"location":"admin/permissions/#mappings","title":"Mappings","text":"

    Mapping permissions is similar to default Active Directory permissions, but utilizing the powereful Acces Level component to ease and enhance the delegation process.

    "},{"location":"admin/permissions/#impersonation","title":"Impersonation","text":"

    As a super admin, you will be able to impersonate the application experience of other users. This is extremely helpful when setting up permissions to verify the access you intended.

    "},{"location":"admin/templates/","title":"Templates","text":"

    Templates are used to define the data applied at user creation. They allow you to prefill or request entry of whatever user properties you want.

    "},{"location":"admin/templates/#inheritance","title":"Inheritance","text":"

    One very useful and powerful feature is template inheritance. Create a base template that contains the common data for all your users, like Company or your Username or Password algorithms, all child templates will inherit the values and any changes made to the base template.

    "},{"location":"admin/templates/#template-components","title":"Template Components","text":""},{"location":"admin/templates/#parent-template","title":"Parent Template","text":"

    Defines a parent template from which to inherit values from.

    "},{"location":"admin/templates/#template-name","title":"Template Name","text":"

    The name for the template as will be shown to users on the create user page.

    "},{"location":"admin/templates/#template-category","title":"Template Category","text":"

    Organize your templates into categories for easy retrieval.

    "},{"location":"admin/templates/#visibility","title":"Visibility","text":"

    Control whether the template is visible on Create User page. Useful for base templates that should not be used directly.

    "},{"location":"admin/templates/#username-display-name-and-password","title":"Username, Display Name, and Password","text":"

    Define the username and display name formats along with the new password for created users. An assortment of string variables are available to compute the value on creation.

    In addition, you can pull the first X characters of a field or perform regex matches.

    "},{"location":"admin/templates/#variables","title":"Variables","text":"

    {variable:modifier[argument]}, {variable:modifier}, {variable[argument]}, or just {variable}

    Variables Expressions must be surrounded by curly braces eg: {fn}

    Modifiers and Arguments are both optional

    Variable Expressions can be chained together and anything outside of curly braces will be copied as is. eg: {fi}{ln}

    Variable Variable Description Modifier Modifier Description Argument Argument Description fn First Name u, l, regex Upper Case, Lower Case, Regular Expression 0-10000, Regex Expression eg: (?<!\\d)([a-zA-Z])(\\d) Pulls the first x number of characters, A custom regular expression in match mode fi First Initial mn Middle Name u, l, regex Upper Case, Lower Case, Regular Expression 0-10000, Regex Expression eg: (?<!\\d)([a-zA-Z])(\\d) Pulls the first x number of characters, A custom regular expression in match mode mi Middle Initial ln Last Name u, l, regex Upper Case, Lower Case, Regular Expression 0-10000, Regex Expression eg: (?<!\\d)([a-zA-Z])(\\d) Pulls the first x number of characters, A custom regular expression in match mode li Last Initial username Username alphanum Random letter or number u, l Upper Case, Lower Case alpha Random letter u, l Upper Case, Lower Case num Random number

    Examples

    Expression Description {fn} Returns the whole first name {fn[1]} or {fi} Returns the first initial {fn:l[2]} Returns the first two characters of the first name in lower case {ln:regex[^(.{3})(.*Jr)$]} A regex search on the last name pulling the first 3 characters and includes Jr if the last name ends in Jr"},{"location":"admin/templates/#account-options","title":"Account Options","text":""},{"location":"admin/templates/#allow-username-override","title":"Allow Username Override","text":"

    If enabled, users will be able to change the generated username.

    Note

    Super-admins are always able to override usernames

    "},{"location":"admin/templates/#require-password-change","title":"Require Password Change","text":"

    If enabled, the associated checkbox in ADUC will be checked and users will be asked to change their password upon first domain login.

    "},{"location":"admin/templates/#send-welcome-email","title":"Send Welcome Email","text":"

    If enabled, an email containing the username and password will be sent. If the email field is generated, static, or editable the email will go to that address. If no address is entered into the email field, the user will be asked for a destination.

    "},{"location":"admin/templates/#ask-for-alternate-email","title":"Ask For Alternate Email","text":"

    If enabled, Blazam will always ask for a custom destination address for credential emails.

    "},{"location":"admin/templates/#formula-sim","title":"Formula Sim","text":"

    The formula simulator allows you to more easily construct your generated variable expressions. Preview your changes on the fly while constructing your configuration.

    "},{"location":"admin/templates/#fields","title":"Fields","text":"

    This section allows for the addition of any of the user attribute you want to define After adding a field, you can then define a value, allow the user to edit the value, or require the value on creation.

    "},{"location":"admin/templates/#organizational-unit","title":"Organizational Unit","text":"

    Where the new user should be placed. Users must have \"Create User\" priviledges in this OU to use this template.

    "},{"location":"admin/templates/#groups","title":"Groups","text":"

    The groups to assign the user to after creation. This can include inherited groups from parent templates.

    "},{"location":"admin/settings/application/","title":"Application Settings","text":""},{"location":"admin/settings/application/#application-name","title":"Application Name","text":"

    Brand Blazam with your own personalized name.

    "},{"location":"admin/settings/application/#homepage-message","title":"Homepage Message","text":"

    Messages entered here will be displayed to all user on their home page dashboard. The text has full HTML support for message customization.

    "},{"location":"admin/settings/application/#force-https","title":"Force HTTPS","text":"

    Forces http connections to https.

    "},{"location":"admin/settings/application/#user-helpdesk-url","title":"User Helpdesk URL","text":"

    Warning

    Not currently implemented

    This is your organizations tech support portal for help buttons within Blazam.

    "},{"location":"admin/settings/application/#branding-icon","title":"Branding Icon","text":"

    Upload you organization's logo or other image to use within the app.

    Note

    The icons used in Blazam are sent to the browser in a method that tells the browser to cache the image for up to 24 hours. This reduces traffic between the web server and the database. Keep this in mind when changing the Branding Icon.

    "},{"location":"admin/settings/application/#website-fqdn","title":"Website FQDN","text":"

    Note

    Will be used for links within notification emails in an upcoming update

    The fully qualified domain name of your Blazam instance for use in email notification links.

    "},{"location":"admin/settings/application/#ssl-certificate","title":"SSL Certificate","text":"

    Info

    Only available when running Blazam as a service. Use IIS Manager to control SSL when running under IIS.

    Upload an SSL certificate with private key to use for encryption

    "},{"location":"admin/settings/authentication/","title":"Authentication Settings","text":""},{"location":"admin/settings/authentication/#admin-password","title":"Admin Password","text":"

    Allows for changing the built-in admin account password

    "},{"location":"admin/settings/authentication/#session-timeout","title":"Session Timeout","text":"

    The time in minutes that a web user should be authenticated for.

    Note

    Blazam uses a rolling expiration, which means that the session expiration time is reset on every page navigation.

    "},{"location":"admin/settings/authentication/#duo-multi-factor-authentication","title":"DUO Multi-Factor Authentication","text":"

    Blazam currently only supports DUO Security for 2FA/MFA

    "},{"location":"admin/settings/authentication/#setup","title":"Setup","text":"

    To enable DUO...

    1. Go to your DUO admin console and go to Applications.
    2. Click the \"Protect an Application\" button to add a new application
    3. Search and choose \"Web SDK\"
    4. Copy the Client ID, Client secret, and API hostname to Blazam's authentication settings page.
    5. Rename your DUO entry with the name of your Blazam App so your users know what the prompt is for.
    "},{"location":"install/config/","title":"Configuration","text":"

    All web host application settings are set in the appsettings.json file in the root path of the application directory.

    Note

    If this is a manual installation you must create the appsettings.json file. A template is available (appsettings.example.json) that can be copied and renamed.

    "},{"location":"install/config/#appsettings","title":"AppSettings","text":"

    appsettings.json

    "},{"location":"install/config/#example-file","title":"Example File","text":"
    {\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Information\",\n      \"Microsoft.Hosting.Lifetime\": \"Information\",\n      \"Microsoft.EntityFrameworkCore.Database.Command\": \"Warning\"\n    }\n  },\n  \"EncryptionKey\": \"supersecretstring\",\n  \"DebugMode\": \"false\",\n  \"ListeningAddress\": \"*\",\n  \"HTTPPort\": \"79\",\n  \"HTTPSPort\": \"442\",\n  \"AllowedHosts\": \"*\",\n  \"DatabaseType\": \"SQLite\", //SQL,SQLite,or MySQL\n  \"ConnectionStrings\": {\n\n    \"DBConnectionString\": \"\"\n  }\n\n}\n
    "},{"location":"install/config/#logging","title":"Logging","text":"

    It is recommended not to modify logging settings. They may be useful for issues that arise.

    "},{"location":"install/config/#encryptionkey","title":"EncryptionKey","text":"

    Danger

    Changing this value after installation will break decryption, thereby preventing any successful logons.

    Note

    For manual installations, be sure to change this value from it's default before launching the app. Make it whatever you want, as long as it's different

    Backup the Encryption Key!

    It is highly recommended to backup the encryption key immediatly following the installation wizard for production environments.

    Loss of the encryption key will result in the inabillity to log in as the application admin, and break communication with your Actvie Directory, effectivley locking you out without manual modifications to the database.

    To backup the key from the app, go to the Settings page and click the System tab.

    Lost your encryption key?
    1. Connect to your database with a management application. Modify the admin password in the table 'AppSettings' to a new password in plaintext
    2. If running as a service and forcing HTTPS, change ForceHTTPS in 'AppSettings' to 0
    3. Restart Blazam and log in with the new admin password.
    4. Reset the admin password from within Blazam, this will encypt it in the database with the new encyption key.
    5. Reset the password for Active Directory within Blazam so it is aligned with the new encyption key.
    6. Reset Duo Private Key if set.
    7. Reset Update Credentials password if set.
    8. Reupload SSL Certificate if running as a service for HTTPS
    Values Description string Any string, this is the seed that generates the encryption key used by the database"},{"location":"install/config/#debugmode","title":"DebugMode","text":"Values Description true The application will provide additional debugging information to the browser (This may expose priviledged information to users, only enable for assisting development) false The application will operate in the normal mode"},{"location":"install/config/#httpport","title":"HTTPPort","text":"

    Info

    This setting has no effect when running under IIS

    Values Description PortNumber If running as a service, the application will listen for HTTP connections on this port"},{"location":"install/config/#httpsport","title":"HTTPSPort","text":"

    Info

    This setting has no effect when running under IIS

    Values Description PortNumber If running as a service, the application will listen for HTTPS connections on this port"},{"location":"install/config/#allowedhosts","title":"AllowedHosts","text":"

    Info

    This setting has no effect when running under IIS

    Values Description * Allows all IP addresses to communicate with Blazam subnet/mask Allows only IP's from the defined subnet to communicate with Blazam"},{"location":"install/config/#databasetype","title":"DatabaseType","text":"Values Description SQL The application will operate under SQL SQLite The application will operate under SQLite MySQL The application will operate under MySQL"},{"location":"install/config/#dbconnectionstring","title":"DBConnectionString","text":"Values Description string The connection string to connect to your database. If you need a generator try one of the following SQL, Sqlite, Mysql."},{"location":"install/firewall/","title":"Firewall","text":""},{"location":"install/firewall/#user-access","title":"User Access","text":"

    Blazam listens for HTTP and HTTPS connections on whatever ports you configure during installation.

    Forward these ports on firewalls that should allow access.

    "},{"location":"install/firewall/#system-communications","title":"System Communications","text":"

    If you have a firewall between Blazam and the Active Directory domain controllers forward the port configured in settings within the app.

    "},{"location":"install/manual/","title":"Manual Installation","text":""},{"location":"install/manual/#pre-requisites","title":"Pre-Requisites","text":""},{"location":"install/manual/#download","title":"Download","text":""},{"location":"install/manual/#install-under-iis","title":"Install under IIS","text":"

    Feel free to deviate from the instructions to fit your desired deployment

    1. Ensure the Web Socket Module is installed (Required)
    2. Install the Application Initialization Module (Optional)
    3. Copy contents of zip file to a directory accessible by IIS
    4. Create new Site in IIS for Blazam

    5. Set ApplicationPool to AlwaysRunning (Optional)

    6. Set IIS Site to Preload (Optional)

    7. Continue with Configuration

    "},{"location":"install/manual/#install-as-service","title":"Install as Service","text":"
    1. Extract the application to any directory eg:C:\\Program Files\\Blazam
    2. Using nssm.exe in the extracted files, install BLAZAM.exe as a service.
    3. Continue with Configuration
    "},{"location":"install/security/","title":"Security","text":"

    Blazam adheres to a strict delegation of elevated privileges. It is designed to run under an un-privileged user account.

    Abstract

    The developers of Blazam always keep security and privilege protection as a top priority.

    All passwords are encrypted both at rest and in transit. All incoming/outgoing connections are TLS/SSL capable.

    Having said that, we take no responsibillity for any damages incurred from your use of this software. You are encouraged to review the source code for yourself.

    Danger

    Running the web application under elevated privileges exposes your Web Server and Active Directory to unneccessary risk of framework exploits.

    "},{"location":"install/security/#internet-facing","title":"Internet Facing","text":"

    Should you decide to publish Blazam to the internet, you should ensure that a valid SSL certificate is supplied and forcing of HTTPS is enabled either in-app or via IIS.

    "},{"location":"install/security/#active-directory-user","title":"Active Directory User","text":"

    The application only has as much privilege as you supply it. It is possible to set up an advanced permission ACL within Active Directory for the user account provided for AD communication to limit the exposure of the application.

    "},{"location":"install/security/#application-user","title":"Application User","text":"

    Danger

    Do not run the IIS application pool or application service as an adminstrator or System account.

    "},{"location":"install/security/#for-iis","title":"For IIS","text":"

    Use the default IIS_User account provided to the application pool.

    "},{"location":"install/security/#for-service","title":"For Service","text":"

    Using the NetworkService account is recommended.

    "},{"location":"install/security/#folder-permissions","title":"Folder Permissions","text":"

    For most deployments, no modifications to folder permissions are required.

    The following conditions warrant changing application root directory permissions:

    "},{"location":"install/security/#encryption","title":"Encryption","text":"

    The application encrypts sensitive database data such as passwords. Blazam uses the EncryptionString from the appSettings.json configuration file

    How it works

    The encryption key you provide is not the actual key used for encryption. This provides security through obscurity for peace of mind that it alone is not a key to the kingdom.

    Backup the Encryption Key

    It is highly recommended to backup the encryption key immediatly following the installation wizard.

    Loss of the encryption key will result in the inabillity to log in as the application admin, and break communication with your Actvie Directory, effectivley locking you out without manual modifications to the database.

    To backup the key from the app, go to the Settings page and click the System tab. (Coming soon)

    Lost your encryption key?
    1. Connect to your database with a management application. Modify the admin password in the table 'AppSettings' to a new password in plaintext
    2. If running as a service and forcing HTTPS, change ForceHTTPS in 'AppSettings' to 0
    3. Restart Blazam and log in with the new admin password.
    4. Reset the admin password from within Blazam, this will encypt it in the database with the new encyption key.
    5. Reset the password for Active Directory within Blazam so it is aligned with the new encyption key.
    6. Reset Duo Private Key if set.
    7. Reset Update Credentials password if set.
    8. Reupload SSL Certificate if running as a service for HTTPS
    "},{"location":"install/web/","title":"Web Installer","text":""},{"location":"install/web/#pre-requisites","title":"Pre-Requisites","text":"

    The Web installer allows installing the application under IIS, or as a stand-alone service installed under Program Files.

    It always installs the latest version.

    Download Web Installer

    "},{"location":"update/auto/","title":"Automatic Updates","text":""},{"location":"update/auto/#self-update-setup","title":"Self-Update Setup","text":"

    Some manual configuration is neccessary to perform self-updates for now.

    First decide the account to use. There are two approved options.

    1. Use the Active Directory Credentials provided to Blazam
    2. Use a custom set of credentials. (This can be a local user account with no administrative permissions)

    Finally, apply write permissions to the application installation directory for the chosen account.

    "},{"location":"update/auto/#how","title":"How?","text":"

    To configure automatic updates, go to Configure -> Settings -> Update and enable auto updates.

    You can then choose a time of day to perform the update. The default value is 2:00 AM local server time. Choose a time with minimal user activity to avoid disruptions.

    When an update is released, Blazam will schedule a self update at the configured time.

    "},{"location":"update/manual/","title":"Manual Update","text":"

    Info

    Blazam can update itself, but some configuration is required. Check the self-update page for more info.

    Manual updating is very easy with Blazam

    1. Download the latest release
    2. Stop your Blazam instance via IIS or Services
    3. Extract the contents of the release zip file to the application directory
    4. Restart Blazam

    All database updates are applied automatically when the application starts.

    "},{"location":"update/self/","title":"Self-Update","text":"

    Blazam can update itself regardless of how it is installed.

    "},{"location":"update/self/#self-update-setup","title":"Self-Update Setup","text":"

    Some manual configuration is necessary to perform self-updates for now.

    First decide the account to use. There are two approved options.

    1. Use the Active Directory Credentials provided to Blazam
    2. Use a custom set of credentials. (This can be a local user account with no administrative permissions, but granted management permissions to IIS or the service)

    Finally, apply write permissions to the application installation directory for the chosen account.

    "},{"location":"update/self/#how","title":"How?","text":"

    To update go to Configure -> Settings -> Update, if an update is available, an update button and release notes will be available.

    During a self update Blazam backs up the current installation to C:\\Windows\\temp\\Blazam\\backup\\ or wherever the running user's temporary folder is configured.

    "},{"location":"user/","title":"User Guide","text":""},{"location":"user/#user-guide","title":"User Guide","text":""},{"location":"user/#installation","title":"Installation","text":"

    Blazam is a compatible PWA (Progressive Web Application). For easy access you can opt to \"install\" the webapp to your local device (desktop/laptop/mobile).

    "},{"location":"user/#dashboard-widgets","title":"Dashboard Widgets","text":"

    The home page allows you to set up and organize an assortment of dashboard widgets.

    You must be provided relevant read permissions somewhere in the directory to be able to add each widget.

    The full set of widgets are: - New Users - New Groups - New Computers - New OU's - New Printers - Changed AD Entries - Changed Passwords - Locked Out Users - Favorites - Application Logons (Super-admins only)

    "}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Blazam","text":"

    Main Site

    Blazam is a powerful, free, web-based Active Directory management portal.

    Enable you and your users to manage legacy Active Directory in a modern way.

    "},{"location":"#environment-requirements","title":"Environment Requirements","text":"

    Sorry

    This app is simply not designed for organizations that clump all their users into a select few OU's. Having a well defined OU structure is imperitive to the operation of this application.

    Sure you can use it, but the granularity of your delegation control is proportional to the granularity of your OU tree.

    Continuing

    If you're looking for an app that delegates to groups instead of OU's, good luck. The technical reality of LDAP and Active Directory prohibit any tolerable experience delegating groups to groups.

    "},{"location":"#open-source","title":"Open Source","text":"

    Blazam and it's documentation are open source. Contributions are encouraged.

    "},{"location":"license/","title":"Blazam License Agreement","text":"

    Copyright (c) 2023 Blazam

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    This license is only applicable to versions of the Software that included this license in the installed software directory or source code. Future versions including a different license will not be subject to this agreement and will operate entirely under the included license of said future version of the Software.

    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    "},{"location":"privacy/","title":"Privacy Policy for Blazam","text":"

    Last updated: March 15, 2023

    "},{"location":"privacy/#introduction","title":"Introduction","text":"

    This Privacy Policy describes how Blazam (\"we\", \"us\", or \"our\") collects, uses, shares, and protects your personal information when you use our web app Blazam (\"the Software\").

    By using the Software, you agree to the collection and use of your personal information in accordance with this Privacy Policy.

    "},{"location":"privacy/#what-information-do-we-collect","title":"What information do we collect?","text":"

    We collect information that you provide to us when you use the Software, such as your name, email address, password, and any other information that you choose to provide.

    We also collect information that is automatically generated when you use the Software, such as your IP address, browser type, device type, operating system, pages visited, time spent on the Software, and other statistical data.

    We use Google Analytics 4 to help us analyze how users use the Software. Google Analytics 4 collects information such as how often users visit the Software, what pages they visit, and what other sites they used prior to coming to the Software. Google Analytics 4 does not collect your name or other identifying information. We do not combine the information collected by Google Analytics 4 with any personally identifiable information. You can learn more about how Google collects and processes data at https://policies.google.com/technologies/partner-sites.

    "},{"location":"privacy/#how-do-we-use-your-information","title":"How do we use your information?","text":"

    We use your information for the following purposes:

    "},{"location":"privacy/#how-do-we-share-your-information","title":"How do we share your information?","text":"

    We do not sell or rent your personal information to third parties. We may share your personal information with third parties in the following circumstances:

    "},{"location":"privacy/#what-are-your-rights","title":"What are your rights?","text":"

    You have certain rights regarding your personal information that we collect and process. Depending on where you live, these rights may include:

    To exercise any of these rights, please contact us at support@blazam.org. We will respond to your request within a reasonable timeframe.

    "},{"location":"privacy/#how-do-we-protect-your-information","title":"How do we protect your information?","text":"

    We take reasonable measures to protect your personal information from unauthorized access,use, disclosure, alteration, or destruction. However, no method of transmission or storage is completely secure and we cannot guarantee the absolute security of your personal information.

    We store your personal information for as long as it is necessary to provide the Software and fulfill the purposes outlined in this Privacy Policy, unless a longer retention period is required or permitted by law.

    "},{"location":"privacy/#how-do-we-use-cookies-and-other-tracking-technologies","title":"How do we use cookies and other tracking technologies?","text":"

    We use cookies and other tracking technologies to collect and store information about your preferences and activity on the Software. Cookies are small files that are placed on your device when you visit a website. They help us recognize you and remember your settings when you return to the Software. You can manage your cookie preferences in your browser settings, but please note that some features of the Software may not function properly if you disable or reject cookies.

    We also use web beacons, pixels, tags, and scripts to collect and track information about how you interact with the Software and our email communications. These technologies help us measure the effectiveness of our marketing campaigns and improve our Software.

    "},{"location":"privacy/#do-we-link-to-other-websites","title":"Do we link to other websites?","text":"

    The Software may contain links to other websites that are not operated by us. We are not responsible for the content or privacy practices of those websites. We encourage you to review the privacy policies of any third-party websites that you visit.

    "},{"location":"privacy/#how-do-we-update-this-privacy-policy","title":"How do we update this Privacy Policy?","text":"

    We may update this Privacy Policy from time to time to reflect changes in our data practices or applicable laws. We will notify you of any material changes by posting the updated Privacy Policy on the Software or by sending you an email notification. Your continued use of the Software after we post the updated Privacy Policy constitutes your acceptance of the new Privacy Policy.

    "},{"location":"privacy/#how-can-you-contact-us","title":"How can you contact us?","text":"

    If you have any questions or comments about this Privacy Policy or our data practices, please contact us at:

    Jacobsen Productions USA Email: support@blazam.org

    "},{"location":"admin/fields/","title":"Fields","text":"

    The fields configuration section allows for the definition of custom schema attributes in your Active Directory environment.

    Once a field is defined it will become available for delegation in Permissions.

    "},{"location":"admin/fields/#display-name","title":"Display Name","text":"

    This is the label that will be shown for this attribute in Blazam. It can be in your localized language for your convenience.

    "},{"location":"admin/fields/#field-name","title":"Field Name","text":"

    This is the name of the attribute as shown on the attributes tab of the object in Active Directory.

    Remember you need to enable Advanced View in ADUC to see the attributes tab.

    "},{"location":"admin/fields/#field-type","title":"Field Type","text":"

    This should be set based on the type of data the the attribute stores. Check the attribute values to determine the best match. If the value does not show in Blazam try a different type.

    "},{"location":"admin/fields/#object-types","title":"Object Types","text":"

    The final section of defining a field is the selection of object types. Check whichever types the attribute is used on.

    "},{"location":"admin/initialSetup/","title":"Initial Setup","text":"

    After installing Blazam, open a browser to your published website.

    Upon first launch, the application will enter an installation wizard to guide you in completing the initial configuration.

    "},{"location":"admin/initialSetup/#setup-wizard","title":"Setup Wizard","text":""},{"location":"admin/initialSetup/#database","title":"Database","text":""},{"location":"admin/initialSetup/#pre-requisites-excluding-sqlite","title":"Pre-requisites (Excluding Sqlite)","text":"

    Tip

    The web installer ensures the prerequisites are fulfilled before allowing installation.

    The database page confirms that the settings you configured in appSettings.json (or as performed by the web installer) are correct and a connection to the database is successful.

    You can then \"install\" the database, which will set up all the necessary tables and seed data.

    "},{"location":"admin/initialSetup/#authentication","title":"Authentication","text":"

    The authentication install page allows you to set up your built-in admin password.

    This account is provided to allow login even when no connection to Active Directory can be made.

    "},{"location":"admin/initialSetup/#active-directory","title":"Active Directory","text":"

    This is the most important of first launch steps.

    Server - This can be your domain name, but if that doesn't work pick a domain controller to connect to and use it's DNS name.

    Port - The port to connect to.

    Username - The account name excluding the domain. (eg:blazam) This account should have administrative permissions for whatever scope you intend to use the application for.

    Password - The password for the domain account.

    Use TLS - Whether to use TLS when connecting. For internal networks this is optional. It is highly recommended if you are communicating to your domain over the internet.

    FQDN - The fully qualified domain name of your Active Directory domain.

    Base DN - The base organizational unit distinguished name from where to begin scoping the application. Any OU's above this DN are not available to Blazam.

    Info

    At the bottom of the page is a connection status panel that will show you the state of the connection as you make changes.

    "},{"location":"admin/initialSetup/#finalize-install","title":"Finalize Install","text":"

    After finalizing install you will be brought to the login page. Enter the admin username and the password you set during the initial setup.

    "},{"location":"admin/notifications/","title":"Notifications","text":"

    Blazam offers a flexible notification system for both in-app and email notifications.

    "},{"location":"admin/notifications/#requirements","title":"Requirements","text":"

    In order for email notifications to go out, email must be enabled in Configure -> Settings.

    "},{"location":"admin/notifications/#behavior","title":"Behavior","text":"

    Notification settings, much like permissions, are applied to OU's and propagate down the OU tree unless a Block is placed at a lower level.

    In-app and email notification types can be included/excluded together or independently.

    "},{"location":"admin/notifications/#user-access","title":"User Access","text":"

    All users can manage their own notification settings via the User Button in the top right of Blazam.

    "},{"location":"admin/notifications/#admin-management","title":"Admin Management","text":"

    Super-admins can manage all other users notifications via the Configure -> Notifications feature.

    "},{"location":"admin/permissions/","title":"Permissions","text":"

    Permissions in Blazam differ from Active Directory in one major (and extremely helpful) way.

    Feature Active Directory Blazam Reusable ACL's Each ACL is unique for each OU Create one type of access and reuse that list for any number of OU's ACL Naming ACL's are simply a list of properties in the security tab with no real grouping or de-granularization Named ACL's allow for quick identification of access and it's source as well as allowing the creation of role based ACL's ACL inheritance ACL's at higher level OU's propagate down except for overriding deny's Blazam behaves the same as Active Directory in this regard

    TLDR

    Blazam adds a layer of abstraction to Active Directory permissions. By including an Access Level layer between the OU permissions and the group assigned, you can create a single ACL rule and reuse it for as many groups on as many OU's as you'd like.

    The Access Level's you define can be reused or combined to create exactly the configuration you desire.

    Example

    A group HR could be given the Access Level Read Users (which allows only read access to usr demographics fields) and the Read Groups Access Level to the OU's Company/Marketing and Company/IT while also receiving Rename Users for the Company/Marketing OU as well as the Deny Group Read Access Level for the Company/IT OU.

    This will result in a member of HR to be able to read user demographics in Company/Marketing and Company/IT while being able to read the groups a user is a member of, only if the group is under the Company/Marketing OU.

    They will also be able to rename users under Company/Marketing

    Note

    Permissions that are applied inherit fully down the OU tree unless a Deny permission is set at a lower level.

    "},{"location":"admin/permissions/#delegates","title":"Delegates","text":"

    The core element of the permission system in Blazam is the \"Delegate\".

    A \"Delegate\" can be any group or user.

    Any \"Delegate\" added will allow that user or members of that group to log into the application.

    Nested group members are counted.

    "},{"location":"admin/permissions/#access-levels","title":"Access Levels","text":"

    Access Levels improve upon the default permission system found in Active Directory.

    "},{"location":"admin/permissions/#parameters","title":"Parameters","text":""},{"location":"admin/permissions/#name","title":"Name","text":"

    You can name your Access Levels however you'd like.

    "},{"location":"admin/permissions/#object-permissions","title":"Object Permissions","text":"

    Permissions are split between different Active Directory object types. You can set different permissions for groups from users, computers, or OU's within the same OU, or any combination therein.

    "},{"location":"admin/permissions/#field-permissions","title":"Field Permissions","text":"

    Under each object type allowed, you can choose which fields will be denied, readable, or editable.

    "},{"location":"admin/permissions/#group-membership-access","title":"Group Membership Access","text":"

    Group membership control in Blazam is tied to the group and read permissions.

    "},{"location":"admin/permissions/#assignunassing-action","title":"Assign/Unassing Action","text":"

    The delegate user must have Assign/Unassign action permissions provided to the parent group in order to assign users or groups to it.

    "},{"location":"admin/permissions/#read-usersgroups","title":"Read Users/Groups","text":"

    The final permission that must be assigned to delegates is read access to users or groups to be able to add as a member of the parent group

    "},{"location":"admin/permissions/#mappings","title":"Mappings","text":"

    Mapping permissions is similar to default Active Directory permissions, but utilizing the powereful Acces Level component to ease and enhance the delegation process.

    "},{"location":"admin/permissions/#impersonation","title":"Impersonation","text":"

    As a super admin, you will be able to impersonate the application experience of other users. This is extremely helpful when setting up permissions to verify the access you intended.

    "},{"location":"admin/templates/","title":"Templates","text":"

    Templates are used to define the data applied at user creation. They allow you to prefill or request entry of whatever user properties you want.

    "},{"location":"admin/templates/#inheritance","title":"Inheritance","text":"

    One very useful and powerful feature is template inheritance. Create a base template that contains the common data for all your users, like Company or your Username or Password algorithms, all child templates will inherit the values and any changes made to the base template.

    "},{"location":"admin/templates/#template-components","title":"Template Components","text":""},{"location":"admin/templates/#parent-template","title":"Parent Template","text":"

    Defines a parent template from which to inherit values from.

    "},{"location":"admin/templates/#template-name","title":"Template Name","text":"

    The name for the template as will be shown to users on the create user page.

    "},{"location":"admin/templates/#template-category","title":"Template Category","text":"

    Organize your templates into categories for easy retrieval.

    "},{"location":"admin/templates/#visibility","title":"Visibility","text":"

    Control whether the template is visible on Create User page. Useful for base templates that should not be used directly.

    "},{"location":"admin/templates/#username-display-name-and-password","title":"Username, Display Name, and Password","text":"

    Define the username and display name formats along with the new password for created users. An assortment of string variables are available to compute the value on creation.

    In addition, you can pull the first X characters of a field or perform regex matches.

    "},{"location":"admin/templates/#variables","title":"Variables","text":"

    {variable:modifier[argument]}, {variable:modifier}, {variable[argument]}, or just {variable}

    Variables Expressions must be surrounded by curly braces eg: {fn}

    Modifiers and Arguments are both optional

    Variable Expressions can be chained together and anything outside of curly braces will be copied as is. eg: {fi}{ln}

    Variable Variable Description Modifier Modifier Description Argument Argument Description fn First Name u, l, regex Upper Case, Lower Case, Regular Expression 0-10000, Regex Expression eg: (?<!\\d)([a-zA-Z])(\\d) Pulls the first x number of characters, A custom regular expression in match mode fi First Initial mn Middle Name u, l, regex Upper Case, Lower Case, Regular Expression 0-10000, Regex Expression eg: (?<!\\d)([a-zA-Z])(\\d) Pulls the first x number of characters, A custom regular expression in match mode mi Middle Initial ln Last Name u, l, regex Upper Case, Lower Case, Regular Expression 0-10000, Regex Expression eg: (?<!\\d)([a-zA-Z])(\\d) Pulls the first x number of characters, A custom regular expression in match mode li Last Initial username Username alphanum Random letter or number u, l Upper Case, Lower Case alpha Random letter u, l Upper Case, Lower Case num Random number

    Examples

    Expression Description {fn} Returns the whole first name {fn[1]} or {fi} Returns the first initial {fn:l[2]} Returns the first two characters of the first name in lower case {ln:regex[^(.{3})(.*Jr)$]} A regex search on the last name pulling the first 3 characters and includes Jr if the last name ends in Jr"},{"location":"admin/templates/#account-options","title":"Account Options","text":""},{"location":"admin/templates/#allow-username-override","title":"Allow Username Override","text":"

    If enabled, users will be able to change the generated username.

    Note

    Super-admins are always able to override usernames

    "},{"location":"admin/templates/#require-password-change","title":"Require Password Change","text":"

    If enabled, the associated checkbox in ADUC will be checked and users will be asked to change their password upon first domain login.

    "},{"location":"admin/templates/#send-welcome-email","title":"Send Welcome Email","text":"

    If enabled, an email containing the username and password will be sent. If the email field is generated, static, or editable the email will go to that address. If no address is entered into the email field, the user will be asked for a destination.

    "},{"location":"admin/templates/#ask-for-alternate-email","title":"Ask For Alternate Email","text":"

    If enabled, Blazam will always ask for a custom destination address for credential emails.

    "},{"location":"admin/templates/#formula-sim","title":"Formula Sim","text":"

    The formula simulator allows you to more easily construct your generated variable expressions. Preview your changes on the fly while constructing your configuration.

    "},{"location":"admin/templates/#fields","title":"Fields","text":"

    This section allows for the addition of any of the user attribute you want to define After adding a field, you can then define a value, allow the user to edit the value, or require the value on creation.

    "},{"location":"admin/templates/#organizational-unit","title":"Organizational Unit","text":"

    Where the new user should be placed. Users must have \"Create User\" priviledges in this OU to use this template.

    "},{"location":"admin/templates/#groups","title":"Groups","text":"

    The groups to assign the user to after creation. This can include inherited groups from parent templates.

    "},{"location":"admin/settings/application/","title":"Application Settings","text":""},{"location":"admin/settings/application/#application-name","title":"Application Name","text":"

    Brand Blazam with your own personalized name.

    "},{"location":"admin/settings/application/#homepage-message","title":"Homepage Message","text":"

    Messages entered here will be displayed to all user on their home page dashboard. The text has full HTML support for message customization.

    "},{"location":"admin/settings/application/#force-https","title":"Force HTTPS","text":"

    Forces http connections to https.

    "},{"location":"admin/settings/application/#user-helpdesk-url","title":"User Helpdesk URL","text":"

    Warning

    Not currently implemented

    This is your organizations tech support portal for help buttons within Blazam.

    "},{"location":"admin/settings/application/#branding-icon","title":"Branding Icon","text":"

    Upload you organization's logo or other image to use within the app.

    Note

    The icons used in Blazam are sent to the browser in a method that tells the browser to cache the image for up to 24 hours. This reduces traffic between the web server and the database. Keep this in mind when changing the Branding Icon.

    "},{"location":"admin/settings/application/#website-fqdn","title":"Website FQDN","text":"

    Note

    Will be used for links within notification emails in an upcoming update

    The fully qualified domain name of your Blazam instance for use in email notification links.

    "},{"location":"admin/settings/application/#ssl-certificate","title":"SSL Certificate","text":"

    Info

    Only available when running Blazam as a service. Use IIS Manager to control SSL when running under IIS.

    Upload an SSL certificate with private key to use for encryption

    "},{"location":"admin/settings/authentication/","title":"Authentication Settings","text":""},{"location":"admin/settings/authentication/#admin-password","title":"Admin Password","text":"

    Allows for changing the built-in admin account password

    "},{"location":"admin/settings/authentication/#session-timeout","title":"Session Timeout","text":"

    The time in minutes that a web user should be authenticated for.

    Note

    Blazam uses a rolling expiration, which means that the session expiration time is reset on every page navigation.

    "},{"location":"admin/settings/authentication/#duo-multi-factor-authentication","title":"DUO Multi-Factor Authentication","text":"

    Blazam currently only supports DUO Security for 2FA/MFA

    "},{"location":"admin/settings/authentication/#setup","title":"Setup","text":"

    To enable DUO...

    1. Go to your DUO admin console and go to Applications.
    2. Click the \"Protect an Application\" button to add a new application
    3. Search and choose \"Web SDK\"
    4. Copy the Client ID, Client secret, and API hostname to Blazam's authentication settings page.
    5. Rename your DUO entry with the name of your Blazam App so your users know what the prompt is for.
    "},{"location":"install/config/","title":"Configuration","text":"

    All web host application settings are set in the appsettings.json file in the root path of the application directory.

    Note

    If this is a manual installation you must create the appsettings.json file. A template is available (appsettings.example.json) that can be copied and renamed.

    "},{"location":"install/config/#appsettings","title":"AppSettings","text":"

    appsettings.json

    "},{"location":"install/config/#example-file","title":"Example File","text":"
    {\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft.AspNetCore\": \"Information\",\n      \"Microsoft.Hosting.Lifetime\": \"Information\",\n      \"Microsoft.EntityFrameworkCore.Database.Command\": \"Warning\"\n    }\n  },\n  \"EncryptionKey\": \"supersecretstring\",\n  \"DebugMode\": \"false\",\n  \"ListeningAddress\": \"*\",\n  \"HTTPPort\": \"79\",\n  \"HTTPSPort\": \"442\",\n  \"AllowedHosts\": \"*\",\n  \"DatabaseType\": \"SQLite\", //SQL,SQLite,or MySQL\n  \"ConnectionStrings\": {\n\n    \"DBConnectionString\": \"\"\n  }\n\n}\n
    "},{"location":"install/config/#logging","title":"Logging","text":"

    It is recommended not to modify logging settings. They may be useful for issues that arise.

    "},{"location":"install/config/#encryptionkey","title":"EncryptionKey","text":"

    Danger

    Changing this value after installation will break decryption, thereby preventing any successful logons.

    Note

    For manual installations, be sure to change this value from it's default before launching the app. Make it whatever you want, as long as it's different

    Backup the Encryption Key!

    It is highly recommended to backup the encryption key immediatly following the installation wizard for production environments.

    Loss of the encryption key will result in the inabillity to log in as the application admin, and break communication with your Actvie Directory, effectivley locking you out without manual modifications to the database.

    To backup the key from the app, go to the Settings page and click the System tab.

    Lost your encryption key?
    1. Connect to your database with a management application. Modify the admin password in the table 'AppSettings' to a new password in plaintext
    2. If running as a service and forcing HTTPS, change ForceHTTPS in 'AppSettings' to 0
    3. Restart Blazam and log in with the new admin password.
    4. Reset the admin password from within Blazam, this will encypt it in the database with the new encyption key.
    5. Reset the password for Active Directory within Blazam so it is aligned with the new encyption key.
    6. Reset Duo Private Key if set.
    7. Reset Update Credentials password if set.
    8. Reupload SSL Certificate if running as a service for HTTPS
    Values Description string Any string, this is the seed that generates the encryption key used by the database"},{"location":"install/config/#debugmode","title":"DebugMode","text":"Values Description true The application will provide additional debugging information to the browser (This may expose priviledged information to users, only enable for assisting development) false The application will operate in the normal mode"},{"location":"install/config/#httpport","title":"HTTPPort","text":"

    Info

    This setting has no effect when running under IIS

    Values Description PortNumber If running as a service, the application will listen for HTTP connections on this port"},{"location":"install/config/#httpsport","title":"HTTPSPort","text":"

    Info

    This setting has no effect when running under IIS

    Values Description PortNumber If running as a service, the application will listen for HTTPS connections on this port"},{"location":"install/config/#allowedhosts","title":"AllowedHosts","text":"

    Info

    This setting has no effect when running under IIS

    Values Description * Allows all IP addresses to communicate with Blazam subnet/mask Allows only IP's from the defined subnet to communicate with Blazam"},{"location":"install/config/#databasetype","title":"DatabaseType","text":"Values Description SQL The application will operate under SQL SQLite The application will operate under SQLite MySQL The application will operate under MySQL"},{"location":"install/config/#dbconnectionstring","title":"DBConnectionString","text":"Values Description string The connection string to connect to your database. If you need a generator try one of the following SQL, Sqlite, Mysql."},{"location":"install/firewall/","title":"Firewall","text":""},{"location":"install/firewall/#user-access","title":"User Access","text":"

    Blazam listens for HTTP and HTTPS connections on whatever ports you configure during installation.

    Forward these ports on firewalls that should allow access.

    "},{"location":"install/firewall/#system-communications","title":"System Communications","text":"

    If you have a firewall between Blazam and the Active Directory domain controllers forward the port configured in settings within the app.

    "},{"location":"install/manual/","title":"Manual Installation","text":""},{"location":"install/manual/#pre-requisites","title":"Pre-Requisites","text":""},{"location":"install/manual/#download","title":"Download","text":""},{"location":"install/manual/#install-under-iis","title":"Install under IIS","text":"

    Feel free to deviate from the instructions to fit your desired deployment

    1. Ensure the Web Socket Module is installed (Required)
    2. Install the Application Initialization Module (Optional)
    3. Copy contents of zip file to a directory accessible by IIS
    4. Create new Site in IIS for Blazam

    5. Set ApplicationPool to AlwaysRunning (Optional)

    6. Set IIS Site to Preload (Optional)

    7. Continue with Configuration

    "},{"location":"install/manual/#install-as-service","title":"Install as Service","text":"
    1. Extract the application to any directory eg:C:\\Program Files\\Blazam
    2. Using nssm.exe in the extracted files, install BLAZAM.exe as a service.
    3. Continue with Configuration
    "},{"location":"install/security/","title":"Security","text":"

    Blazam adheres to a strict delegation of elevated privileges. It is designed to run under an un-privileged user account.

    Abstract

    The developers of Blazam always keep security and privilege protection as a top priority.

    All passwords are encrypted both at rest and in transit. All incoming/outgoing connections are TLS/SSL capable.

    Having said that, we take no responsibillity for any damages incurred from your use of this software. You are encouraged to review the source code for yourself.

    Danger

    Running the web application under elevated privileges exposes your Web Server and Active Directory to unneccessary risk of framework exploits.

    "},{"location":"install/security/#internet-facing","title":"Internet Facing","text":"

    Should you decide to publish Blazam to the internet, you should ensure that a valid SSL certificate is supplied and forcing of HTTPS is enabled either in-app or via IIS.

    "},{"location":"install/security/#active-directory-user","title":"Active Directory User","text":"

    The application only has as much privilege as you supply it. It is possible to set up an advanced permission ACL within Active Directory for the user account provided for AD communication to limit the exposure of the application.

    "},{"location":"install/security/#application-user","title":"Application User","text":"

    Danger

    Do not run the IIS application pool or application service as an adminstrator or System account.

    "},{"location":"install/security/#for-iis","title":"For IIS","text":"

    Use the default IIS_User account provided to the application pool.

    "},{"location":"install/security/#for-service","title":"For Service","text":"

    Using the NetworkService account is recommended.

    "},{"location":"install/security/#folder-permissions","title":"Folder Permissions","text":"

    For most deployments, no modifications to folder permissions are required.

    The following conditions warrant changing application root directory permissions:

    "},{"location":"install/security/#application-permissions","title":"Application Permissions","text":"

    In addition to folder permissions, the account used for updating, whether a domain admin or custom account, must be provided permissinos to be able to manage IIS sites or services on the web host.

    "},{"location":"install/security/#encryption","title":"Encryption","text":"

    The application encrypts sensitive database data such as passwords. Blazam uses the EncryptionString from the appSettings.json configuration file

    How it works

    The encryption key you provide is not the actual key used for encryption. This provides security through obscurity for peace of mind that it alone is not a key to the kingdom.

    Backup the Encryption Key

    It is highly recommended to backup the encryption key immediatly following the installation wizard.

    Loss of the encryption key will result in the inabillity to log in as the application admin, and break communication with your Actvie Directory, effectivley locking you out without manual modifications to the database.

    To backup the key from the app, go to the Settings page and click the System tab. (Coming soon)

    Lost your encryption key?
    1. Connect to your database with a management application. Modify the admin password in the table 'AppSettings' to a new password in plaintext
    2. If running as a service and forcing HTTPS, change ForceHTTPS in 'AppSettings' to 0
    3. Restart Blazam and log in with the new admin password.
    4. Reset the admin password from within Blazam, this will encypt it in the database with the new encyption key.
    5. Reset the password for Active Directory within Blazam so it is aligned with the new encyption key.
    6. Reset Duo Private Key if set.
    7. Reset Update Credentials password if set.
    8. Reupload SSL Certificate if running as a service for HTTPS
    "},{"location":"install/web/","title":"Web Installer","text":""},{"location":"install/web/#pre-requisites","title":"Pre-Requisites","text":"

    The Web installer allows installing the application under IIS, or as a stand-alone service installed under Program Files.

    It always installs the latest version.

    Download Web Installer

    "},{"location":"update/auto/","title":"Automatic Updates","text":""},{"location":"update/auto/#self-update-setup","title":"Self-Update Setup","text":"

    Some manual configuration is neccessary to perform self-updates for now.

    First decide the account to use. There are two approved options.

    1. Use the Active Directory Credentials provided to Blazam
    2. Use a custom set of credentials. (This can be a local user account with no administrative permissions)

    Finally, apply write permissions to the application installation directory for the chosen account.

    "},{"location":"update/auto/#how","title":"How?","text":"

    To configure automatic updates, go to Configure -> Settings -> Update and enable auto updates.

    You can then choose a time of day to perform the update. The default value is 2:00 AM local server time. Choose a time with minimal user activity to avoid disruptions.

    When an update is released, Blazam will schedule a self update at the configured time.

    "},{"location":"update/manual/","title":"Manual Update","text":"

    Info

    Blazam can update itself, but some configuration is required. Check the self-update page for more info.

    Manual updating is very easy with Blazam

    1. Download the latest release
    2. Stop your Blazam instance via IIS or Services
    3. Extract the contents of the release zip file to the application directory
    4. Restart Blazam

    All database updates are applied automatically when the application starts.

    "},{"location":"update/self/","title":"Self-Update","text":"

    Blazam can update itself regardless of how it is installed.

    "},{"location":"update/self/#self-update-setup","title":"Self-Update Setup","text":"

    Some manual configuration is necessary to perform self-updates for now.

    First decide the account to use. There are two approved options.

    1. Use the Active Directory Credentials provided to Blazam
    2. Use a custom set of credentials. (This can be a local user account with no administrative permissions, but granted management permissions to IIS or the service)

    Finally, apply write permissions to the application installation directory for the chosen account.

    "},{"location":"update/self/#how","title":"How?","text":"

    To update go to Configure -> Settings -> Update, if an update is available, an update button and release notes will be available.

    During a self update Blazam backs up the current installation to C:\\Windows\\temp\\Blazam\\backup\\ or wherever the running user's temporary folder is configured.

    "},{"location":"user/","title":"User Guide","text":""},{"location":"user/#user-guide","title":"User Guide","text":""},{"location":"user/#installation","title":"Installation","text":"

    Blazam is a compatible PWA (Progressive Web Application). For easy access you can opt to \"install\" the webapp to your local device (desktop/laptop/mobile).

    "},{"location":"user/#dashboard-widgets","title":"Dashboard Widgets","text":"

    The home page allows you to set up and organize an assortment of dashboard widgets.

    You must be provided relevant read permissions somewhere in the directory to be able to add each widget.

    The full set of widgets are: - New Users - New Groups - New Computers - New OU's - New Printers - Changed AD Entries - Changed Passwords - Locked Out Users - Favorites - Application Logons (Super-admins only)

    "}]} \ No newline at end of file diff --git a/docs/sitemap.xml.gz b/docs/sitemap.xml.gz index 2c7bc6d..dd8fa1e 100644 Binary files a/docs/sitemap.xml.gz and b/docs/sitemap.xml.gz differ diff --git a/docsource/install/security.md b/docsource/install/security.md index d31becf..c8f7bdd 100644 --- a/docsource/install/security.md +++ b/docsource/install/security.md @@ -42,6 +42,10 @@ The following conditions warrant changing application root directory permissions * You want to configure a separate account to run self-updates under, if that account is not a local administrator. +### Application Permissions +In addition to folder permissions, the account used for updating, whether a domain admin or custom account, +must be provided permissinos to be able to manage IIS sites or services on the web host. + ## Encryption The application encrypts sensitive database data such as passwords. Blazam uses the `EncryptionString` from the