12.9.0
Features and improvements
Installation
Updated the branding for Bravura Security within the product installer for a few remaining areas.
Upgrade
Updated the following views to pass post-upgrade check:
usergroups
rolemember
normalized_sod_role_resources
targetobj_assoc
hostoption
User interface
Implemented flexible project structure with standardized folder organization, build tools, and testing framework, establishing the foundation for modern UI development.
Created a responsive, accessible login form with comprehensive client-side and server-side validation, providing immediate feedback and improving user experience.
Added a "Remember Me" feature to the login page that improves user convenience while maintaining security standards:
Added "Remember Me" checkbox to the login form
Username persistence across browser sessions and tabs
Secure credential handling that only saves usernames after successful authentication
Added IIS URL rewrite support for React client-side routing with automatic redirection from
/react/path
to/react/#/path
while preserving query parameters. This enables direct URL access and bookmarking of React routes without requiring manual IIS configuration.Implemented user-friendly authentication error messages with helpful recovery suggestions, improving user experience during authentication failures.
Improved username field validation on the Sign in button when it's empty.
page to disable theAdded password suggestions to React UI Change Password feature.
Updated Change Password React UI page to include the account summary and details and to make valid REST API calls.
Created action cards layout with visual category indicators, providing users with quick access to common tasks in an intuitive and responsive interface.
Developed interactive user metrics visualizations with time-based filtering, providing users with meaningful insights into their account activity and status.
Implemented user accounts summary component with status indicators and quick actions, providing users with an at-a-glance view of their accounts and streamlined access to common operations.
Implemented dashboard-specific metrics collection to gather insights on user interaction patterns, enabling data-driven improvements to the dashboard experience.
Implemented flexible dashboard layout framework with responsive grid system and drag-and-drop widget positioning, providing the foundation for a customizable user experience.
Enhanced login error handling with specific messages and recovery suggestions for disabled and locked user profiles.
Improved product logo clarity on installer screens.
Authentication
Added JWT authentication framework with secure token management and automated type-safe API integration. The implementation includes a complete HTTP client with authentication, React Admin data providers with OData support, and automated TypeScript type generation from OpenAPI specifications for enhanced developer experience and type safety.
Reports and dashboards
Updated the scheduled report configuration page to allow editing and saving the previously saved scheduled report on a patch version upgraded instance.
Implemented a user profile summary card on the dashboard.
Logging
The kvgio input and output log files are now only created when they are explicitely enabled using the psdebug utility and the kvgio submodule. Previously they were created when simply increasing the log levels for the
idmlogsvc
logging service.
API
Updated the IDAPI Login function to return a generic error
Invalid username or password or the specified user has insufficient privileges
when login fails in the following cases to prevent username enumeration:User doesn't exist or invalid
User/Password combination is invalid
User is invalid but doesn't have any ACL
Modified password reset REST API endpoints to accept an optional known batchid input (via custom request header X-BATCH-ID) used to populate batchId values in SessionLogData.
Implemented additional properties for REST API resource TargetGroup:
helpUrl
syncPasswords
uniquePasswords
passwordChangeRestriction
passwordPolicy
Implemented the following REST API endpoints:
GET /v2/targetGroups({targetGroupKey})/passwordPolicy
GET /v2/targetGroups({targetGroupKey})/targetSystems
Implemented REST API identity/connect/userinfo endpoint that provides subject, username, and scopes.
Added lastUpdatedModule and lastUpdatedNode to metadata fields in REST API models.
Added SessionLogAnalytics resource endpoint to REST API.
Added REST API GET request summary endpoint for the SessionLog resource.
Added REST API GET requests for the SessionLog resource.
Added REST API model implementation for the SessionLog resource.
Exposed additional target system options to the REST API:
newIdCaseSetProgram (Program to set the case of new IDs)
networkResourcePlatform (Managed group/Network resource target system type)
userAccountsMandatory (Users must have accounts)
allowClaimAccounts (Allow other users to attach auto-associated accounts)
allowPasswordChange (Allow users to change passwords)
allowAccountUnlock (Allow users to unlock accounts)
allowPasswordVerify (Allow users to verify passwords)
createPrivilegeManagedSystem (Automatically create a Bravura Privilege managed system)
allowAccountEnable (Allow enabling accounts)
Added helpUrl property to the target system resource.
Added a script for mass onboarding for the mass password reset feature.
Add a
context_strict
option to thediscovery_context
.This option performs strict error checking of the return codes of
commit
,wait
, andabort
discovery functions.Added REST API GET requests for the PasswordPolicy resource.
Add REST API PATCH requests for the PasswordPolicy resource.
Added REST API model implementation for the PasswordPolicy resource and related subtypes.
Added default authorization policies
targetgroups_get
andtargetgroups_get_list
for TargetGroups GET endpoints.Added default authorization policies for passwordPolicies GET endpoints to allow all authenticated users to access them.
Adds
accounts_post_create
default policy to allow superusers to makePOST /accounts
requests.Added default policies for the following
accounts
endpoints:accounts_user_get
accounts_targetsystem_get
accounts_attributes_get_list
accounts_attributes_get
accounts_attributes_data_value_get
accounts_attributes_data_value_value_get
accounts_groupmemberships_get_list
accounts_groupmemberships_get
Updated accounts_get and accounts_get_list default policy to allow superuser access.
Modified password strength failures returned on account reset (within idmlib/REST).
Added QuerySplittingBehaviour to IdentityServer.
Suppressed Windows Log Event warnings for non-OData endpoints being flagged incorrectly.
Increased the maximum expansion depth of REST API from the default of 2 to 5.
Added a context_strict option to the discovery_context.
This option performs strict error checking of the return codes of commit, wait, and abort discovery functions.
Added the initial version of the single-user offboard script.
Modified REST API token request error descriptions to say USER_LOCKED or USER_DISABLED if the credentials are correct but the user account locked or disabled, respectively.
Added REST API token revocation endpoint for secure logout functionality.
Added optional X-Batch-ID to REST API function call for mass password reset onboarding and offboarding.
REST: Add default authorization policies targetsystems_get_list, targetsystems_get, targetsystems_accounts_get_list, targetsystems_groups_get_list, and targetsystems_options_get_list for TargetSystems GET endpoints.
The Identity Server 4 implementation has been removed from the REST API solution.
Bravura Pass
Improved the logging of
haveibeenpwned
requestsAdded a command-line utility for testing the passwords against the
haveibeenpwned
database to simplify troubleshooting.Added mass password reset pre-defined request.
Added mass password onboard pre-define request.
Added a mass onboarding script.
Added the initial version of the mass password onboard pre-defined request.
Bravura Identity
The
autores
command line utility now skips and warns for roles that are disabled and/or unassignable when submitting.A warning notification is presented in the role assignment user interface if a selected role is disabled and/or unassignable.
Resolved issues
Installation
The installer now validates that the database compatibility level meets the minimum requirement of 130.
Bravura Privilege
Changes to Create OTP user request:
When a request is issued from the secondary node, it is now always forwarded to the primary node in case the secondary node is unstable.
Fixed an issue where retry operations could never succeed if the initial attempt failed.
Updated stored procedure TargetDelete to use RECOMPILE when deleting from targetobj to ensure that an unsuitable (from a performance perspective) cached query plan is not used when deleting large target systems.
Removed an SQL upgrade script that modifies the value of the discovery option Link accounts on this target system to subscribers for the target system discovery template NT_TEMPLATE and for all discovered systems created from NT_TEMPLATE.
Fixed issues with date timezones for Ajax and the product UI in general related to setting the preferred timezone environment variable.
Bravura Pass
Fixed unexpected quit during password reset when the browser client IP was too long.
Resolved an issue with the Login Assistant / SKA when upgrading from version 12.4.x to 12.8.1 and up. Upgrading to 12.5.0 and up caused an upgrade issue due to rebranding from Hitachi ID to Bravura Security.
Fixed an issue where operation SRES (User self-reset result) is logged per account for both self-service and help-desk reset, which should be one operation per reset action and for self-service reset only. Also updated the
report to generate the proper statistics for both self-service and help-desk change passwords.Resolved an issue with Login Assistant / SKA to retain the value for the vpn-connect-terminate registry key on upgrade. The value was previously being dropped after upgrading Login Assistant.
Resolved an issue with Login Assistant / SKA to retain the values for -vpnurl and -vpnurlsearch for the cmd registry key on upgrade. The vpn-url and vpn-url-search registry keys are also now added for new Login Assistant / SKA installations. These registry keys must be manually added prior to an upgrade of the SKA.
Fixed an issue to correctly report errors when password generation fails.
Added a fix to treat previously completed operations as NOOPs (no operation) instead of failures
Fix issue on pages for unlock/detach/reset password for accounts ending in
.x
.
Bravura Identity
Updated the Orgchart graph page to load the current user's manager, even if the manager is in an orphaned Orgchart tree (calculated level is -1).
The
autores
utility now skips and warns for roles that are disabled and/or unassignable when submitting.A warning message is given in the role assignment user interface if the role is disabled and/or unassignable.
REST API
The Database service (
iddb
) writes to two named pipes to update OPADotNet for REST and IdentityServer applications.Fixed a REST API audit data issue where the caller of PATCH /Accounts, specifically when updating a password, was not being stored in the database.
The Identity Server 4 implementation in the REST API solution has been replaced by one that uses OpenIddict 7.0.0.
The Identity Server 4 implementation has been removed from the REST API solution.
Requests
Fixed an issue in the
app where the delegation manager was unable to delegate an implementer task on behalf of the selected primary implementer.Updated requests app to not list requests with
Calculating authorizers
status withActive
filter on.
Account attributes
Profile attributes now correctly fall back to the next-priority mapped account attribute when the highest priority attribute is removed.
Auto discovery
During discovery, the order of precedence in target attribute overrides is obeyed when listing target attributes.
Resolved an issue where auto discovery failed to recompute account associations when the auto-association account attribute was modified.
Fixed runtime error in ObjDiffAssociate stored procedure during auto-discovery when handling duplicate accounts (sharing the same stable ID) across different targets with cross-target relationships.
Reports
Updated scheduled report configuration page to allow editing and saving the previously saved scheduled report on a patch version upgraded instance.
Component framework
Modified the component uninstallation to check if the table exists before removing component data. This previously caused an issue/exception for hid_extdb to show an error for "no such table".
Authentication chains
Added a fix to clear the SAML Session ID on failure so that authentication cannot be bypassed.
Upgrade / Migration
Fixed an issue that previously still showed connectors in the target type drop-down list that have been removed on upgrade of the Connector Pack.
Upgrade actions
If relevant, the Link accounts on this target system to subscribers discovery option for the target system discovery template "NT_TEMPLATE" and for all discovered systems created from NT_TEMPLATE should be reviewed. By default, this setting is disabled upon installation.
Added strings
vpn-url
andvpn-url-search
. During the upgrade, these registry keys must be manually added to construct therunurl
command line (cmd registry key). To do this:Open regedit and navigate to:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Bravura Security\Bravura Security Fabric\Login Assistant\VPN
Right click New > String Value and enter in
vpn-url
and update your value.Right click New > String Value and enter in
vpn-url-search
and update your value.Execute upgrade with:
msiexec /i "ska-x64.msi" /lv "upgrade-ska.log" REINSTALLMODE=amus
A fix was added to clear the SAML Session ID on failure to prevent authentication bypass.
In addition this will require a change to the custom component
Functional.hid_authchain_saml_auth
in theauthselect_default.py
.In the process function, when checking that the SAMLSessionID exists, it returns an array
['']
, which will always evaluate to True, so the first string value must be extracted and tested against:--- if self.authchain.sessdata.get('SAMLSessionID') and sess_userid: +++ sess_id = self.authchain.sessdata.get('SAMLSessionID') +++ if isinstance(sess_id, list): +++ sess_id = sess_id[0] +++ +++ if sess_id and sess_userid: # Successful SAML authentication. self.authchain.chains.allow_chain('SUCCESS') log.info("Successful authentication of user " "[{}] using SAML".format(sess_userid))