* LaunchDarkly service
* Load file-based flag values, properly support offline only when self-host
* Simplify tests
* Use interface for LD settings
* Remove tests that will provide inconsistent results depending on machine setup and file fallback
* Fall back to offline mode more actively
* Drive fallback file path with setting
* [SG-696] Organization Domain Claiming DB Objects and Migrations (#2394)
* model organization domain claiming
* Added migration scripts and db objects for mssql
* create and implement sql repository abstraction
* Added ef migrations for mysql and postgres. Removed time without timezone in previous migration
* made update on sql migration to use create or alter statement
* removed active column from OrganizationDomain table and decided to go with the hard delete approach
* Ran dotnet restore evaluate
* created DNS service verification using DNSClient (#2401)
* [SG-678] Api Endpoints for Domain Claiming (#2430)
* Added stored procedure to read claimed domains
* Updated Organization Domain Repository to include method to get claimed domains
* Updated domain entity and added request model
* Implemented organization domain respository and regsitered it in the various extensions
* Added create endpoint, request, responses and command
* Added endpoint to get domain by domain entry id
* Ran lint fix
* Added new stored procedure to get domains by organizattion id
* Moved migration scripts to init migration and added new procedure
* Renamed from domainId to Id
* Added and implemented GetDomainByOrganizationId
* Completed GetDomainByOrgId endpoint and started work on verify domain endpoint
* Updated the OrganizationDomain update procedure
* Added delete command and include other endpoints in the controller
* Remove test item from controller
* Remove test item from controller
* Changed access to allow admin, owners and manage sso roles
* changed logic for setting the initial value for the NextRunCount
* Renamed NextRunCount to JobRunCount
* Renamed NextRunCount to JobRunCount on mysql
* Renamed NextRunCount to JobRunCount on postgres
* Removed chaining pattern and added logic to get next run date
* Lint fix
* Added stored procedure to get organization sso details by email address
* Added endpoint to get sso details of an organization with email
* Added organizationDomainRepository to OrganizationController test
* merged with master and fixed conflicts
* [SG-661] Background Domain Verification Service (#2455)
* Added stored procedure to read claimed domains
* Updated Organization Domain Repository to include method to get claimed domains
* Updated domain entity and added request model
* Implemented organization domain respository and regsitered it in the various extensions
* Added create endpoint, request, responses and command
* Added endpoint to get domain by domain entry id
* Ran lint fix
* Added new stored procedure to get domains by organizattion id
* Moved migration scripts to init migration and added new procedure
* Renamed from domainId to Id
* Added and implemented GetDomainByOrganizationId
* Completed GetDomainByOrgId endpoint and started work on verify domain endpoint
* Updated the OrganizationDomain update procedure
* Added delete command and include other endpoints in the controller
* Remove test item from controller
* Remove test item from controller
* Changed access to allow admin, owners and manage sso roles
* Added stored procedure to get unverified domains by nextrundate
* Renamed stored procedure name
* Added domain verification service interface
* Added GetManyByNextRunDate to repository
* Added verification domain service implementation
* changed logic for setting the initial value for the NextRunCount
* This commit should be signed using my SSH key
* Renamed NextRunCount to JobRunCount
* Renamed NextRunCount to JobRunCount on mysql
* Renamed NextRunCount to JobRunCount on postgres
* Removed chaining pattern and added logic to get next run date
* Lint fix
* Implemented EF core version on the repository
* Created background job implementation and logic
* popped stash
* Updated stored procedure and EF script
* Lint fix
* Added logic to set next job count and the next run date when a verification is false
* Added logic to set next job count and the next run date when a verification is false
* Updated stored procedure name on repository
* Removed test trigger
* Lint fix
* Added trigger for job
* Added job count update after successful domain verification
* Lint fix
* Lint fix
* [SG-682] Add Event Log Entries to Organization Domain (#2492)
* Added domain name property to Event related objects
* Added organization domain claiming event types
* Created migration script and updated related event scripts to include domanName
* Added EF Migrations
* Renamed postres script file extension
* Added DomainName property to response model
* Added abstraction to interface
* Added system name to enum
* dotnet formattinfg fix
* Added events to organization domain actions
* Added LastCheckedDate property to domain
* Migrations and stored procedure updates with new column
* Added new stored procedure to get domain by org id and domain name
* Log organization domain event abstract method
* Ef migrattion to add new LastCheckedDate column
* Added duplicate domain exception
* Modified create command to include domain verification and last checked date and renamed methods used
* removed variable
* changed service lifetime
* Renamed trigger
* Initialed property in constructor
* Ensured domain name is stored as lower case
* Fixed suggestions from review
* Fixed suggestions from review
* Return Conflict Status on Organization Domain APIs (#2498)
* Added conflict response to end point to help translate error message on the client better
* Added conflict response to end point to help translate error message on the client better
* Set message with exception message or generic message
* Added last check date to response model (#2499)
* Fix/Check to throw exception when domain is claimed by another organization (#2503)
* Added check to ensure domain claimed by another organization cannot be verified
* Made error message consistent
* [SG-660] Organization Domain Maintenance (#2502)
* Added email template
* Mail service abstraction and implementation
* Mail template model
* Initial delete job commit
* Added SPs to get all unverifed domains after 72 hours and another to delete unverified domains after 7 days
* Moved all organization domain scripts to single file
* Added new scripts implementation for sqlserver and EF core
* Renamed service
* Formatting fix
* Added background service to send warning email and delete expired domains
* Renamed variable
* Added implementation for email warning to organization admins and for deleting expired domains after 7 days
* Added formatting
* Modified read if expired script to limit result to 4 days
* Added send mail abstract method and implementation
* Model used in build mail body
* Completed maintenace service
* Added comment to make logic clear
* Fixed cron expression (#2505)
* Modified procedure and methods to handle flexible verification adn expiration period (#2517)
* Merged with master
* [SG-908] Unit Tests for Organization Domain Claiming Feature (#2522)
* added test controlleer class
* added unit test for create command
* Added query tests
* Added tests for delete and verify command
* Formated code and added some more unit tests
* Fixed lint
* Added log event assertion to create command tests
* Added log event assertion to delete command tests
* Added unit tests for organization domain controller
* Added unit tests for organization domain service
* Modified test after merge
* fixed comment
* fixed comment
* fixed lint
* Defect/SG-977 - Org domain event logs missing details (#2573)
* SG-977 - (1) Refactor EventSystemUser.SSO to be EventSystemUser.DomainVerification to better match SCIM property and for easier display and translation on web client (2) Add new DeviceType of Server to be used on SCIM and Domain Verification logs so event log will show Server as client.
* SG-977 - SCIM bugfix - Restoring / Revoking user access via Jumpcloud activation / suspension did not properly log the events as SCIM events so the client side showed Unknown for both Client and Member.
* Run autoformat to fix lint errors
* SG-977 - Fixed broken test due to new device type logic in event service
* SG-976 - Add admin log and clean up log verbiage for domain verification (#2574)
* SG-976 - Add admin log and clean up log verbiage for domain verification
* SG-976 - (1) Use logInformation extension without exception (2) Clarify verbiage of logs
* SG-955 - On domain verification error or failure, set last checked da… (#2541)
* SG-955 - On domain verification error or failure, set last checked date on the org domain.
* SG-955 - Refactoring VerifyOrganizationDomain event logging to avoid duplication and increase efficiency (based on Gbubemi's PR feedback)
* Org Domain Background Verification service - set last checked date (#2599)
* Refactored OrganizationDomain repository to work with latest changes on code base
* Fixed formatting
* [SG-957] Cannot Delete Organizations due to FK Constraint (#2602)
* Added stored procedure to fix FX contstraint issue when deleting an organization
* Update stored procedures related to organization delete with OrganizationDomain_OrganizationDelete SP
* Fixed formatting
* Updated SP
* SG-990 - Log expired domains that are going to be deleted.
* Fix lint errors with auto format
* /home/runner/work/server/server/src/Core/OrganizationFeatures/OrganizationServiceCollectionExtensions.cs(107,2): error FINALNEWLINE: Fix final newline. Insert '\n'.
* Added missing bracket to fix compile error.
* Added imports for Domain Claiming classes that were lost on merge.
* Fixing broken unit tests + adding proper behavior for newly added SCIM logic changing device type
* Fix lint errors again
* Included domain name set in constructor (#2618)
* [SG-1001] Error Thrown When Verifying Sub Domains (#2621)
* Renamed exception to a more generic name that receives error message from the dns client and also added updates to job count and next run date
* Improved error logs by adding dns client error message
* Fixed formatting
* [SG-1001] Added event logs when a domain is not verified due to thrown exception (#2623)
* Added eevent logs when a domain is not verified due to thrown exception
* Fixed formatting
* Org Domain Verification - Small refactor to improve method/model name… (#2641)
* Org Domain Verification - Small refactor to improve method/model names and method locations - required refactoring of controller routes (I confirmed all behavior still functional)
* Fixed organization test controller issue
* Fixed lint
* Autoformat org domain controller
* Removing whitespace for lint argh, why does Rider not do this.
---------
Co-authored-by: gbubemismith <gsmithwalter@gmail.com>
* Tweak name of Request model to match Response model for ClaimedOrgDomain call
* [SG-1009] Users with Custom Role and "Manage SSO" permission don't receive verification failed email (#2645)
* Modified condition to pick up unverified domains after said period
* Fix to get emails of custom users with manage sso rights
* Formatted code
* Removed return that made background job exit on successful validation (#2648)
* [SG-1014] Unit Tests for Get Organization Sso Details (#2655)
* Added unit tests for GetOrgDomainSsoDetails
* renamed variable
* Adjust OrganizationDomainSsoDetails_ReadByEmail to use outer join so … (#2657)
* Adjust OrganizationDomainSsoDetails_ReadByEmail to use outer join so that claimed domain results will come back if an org has not yet setup a policy
* Removed migration as not needed
* Updated OrganizationDomainSsoDetails_ReadByEmail from original creation migration to use outer join & handle null policy results (and still return results)
* Fixed lint formatting
---------
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
Co-authored-by: Jared Snider <jsnider@bitwarden.com>
Co-authored-by: Todd Martin <tmartin@bitwarden.com>
* Add Sqlite as EF DB provider
Note: In-memory sqlite does not work across projects, since the migrator
only runs on the Admin project
Co-authored-by: Justin Baur <justindbaur@users.noreply.github.com>
* Include example sqlite connection string
* Add migrator assembly to sqlite connection
* Update initial migration to current schema state
* dotnet format 🤖
* Update package locks
* Respect name set in BW_SSL_KEY for cert generation (#2490)
(cherry picked from commit 2469e10110)
* [PS-2016] Add ability to change UID/GID for Bitwarden unified (#2495)
(cherry picked from commit c6fbe8cc44)
* Add SqliteMigrations project to unified Dockerfile
Co-authored-by: Justin Baur <justindbaur@users.noreply.github.com>
Co-authored-by: accolon <mail@accolon.net>
Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>
* Add logging to token usages
* Add settings manipulation of log levels
* Maintain no logging for dev
* Log exception causing Token failure in TryUnprotect
* dotnet format 🤖
* Added deconstruction operator on new debug logs.
* Split off log level settings into separate files
* Improve log messages
* dotnet format 🤖
* Fix token serialization
* Final review notes
Co-authored-by: Todd Martin <>
* Add config endpoint with version and gitHash in response
* Remove gitHash from version, formatting and other improvements
* change name of variable in ConfigController
* Update to properly get gitHash
* SM-94: Add global settings for api url
* SM-94: ConfigController cleanup
* SM-94: Make version and gitHash available for all projects, using AssemblyHelper
* Update ConfigResponseModel GetVersion() call
* Change AssemblyHelpers.cs to use the UTF-8 charset
* SM-94: Use AssemblyHelpers.GetVersion and deprecate CoreHelpers.GetVersion
* SM-90: Add other BaseServiceUriSettings urls
* SM-94: Fix dotnet format issue
* remove old GetVersion method
* Add back the linebreak
* Fix typo in Directory.Build.props
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Added nullable OrganizationId to EventModel
* Added EventType Organization_ClientExportedVault
* Updated CollectController to save the event Organization_ClientExportedVault
* Added OrganizationExportResponseModel to encapsulate Organization Export data
* Added OrganizationExportController to have a single endpoint for Organization vault export
* Added method GetOrganizationCollections to ICollectionService to get collections for an organization
* Added GetOrganizationCiphers to ICipherService to get ciphers for an organization
* Updated controllers to use new methods in ICollectionService and ICipherService
* Upgrade AspNetCoreRateLimiter and enable redis distributed cache for rate limiting.
- Upgrades AspNetCoreRateLimiter to 4.0.2, which required updating NewtonSoft.Json to 13.0.1.
- Replaces Microsoft.Extensions.Caching.Redis with Microsoft.Extensions.Caching.StackExchangeRedis as the original was deprecated and conflicted with the latest AspNetCoreRateLimiter
- Adds startup task to Program.cs for Api/Identity projects to support AspNetCoreRateLimiters breaking changes for seeding its stores.
- Adds a Redis connection string option to GlobalSettings
Signed-off-by: Shane Melton <smelton@bitwarden.com>
* Cleanup Redis distributed cache registration
- Add new AddDistributedCache service collection extension to add either a Memory or Redis distributed cache.
- Remove distributed cache registration from Identity service collection extension.
- Add IpRateLimitSeedStartupService.cs to run at application startup to seed the Ip rate limiting policies.
Signed-off-by: Shane Melton <smelton@bitwarden.com>
* Add caching configuration to SSO Startup.cs
Signed-off-by: Shane Melton <smelton@bitwarden.com>
* Add ProjectName as an instance name for Redis options
Signed-off-by: Shane Melton <smelton@bitwarden.com>
* Use distributed cache in CustomIpRateLimitMiddleware.cs
Signed-off-by: Shane Melton <smelton@bitwarden.com>
* Undo changes to Program.cs and launchSettings.json
* Move new service collection extensions to SharedWeb
* Upgrade Caching.StackExchangeRedis package to v6
* Cleanup and fix leftover merge conflicts
* Remove use of Newtonsoft.Json in distributed cache extensions
* Cleanup more formatting
* Fix formatting
* Fix startup issue caused by merge and fix integration test
Signed-off-by: Shane Melton <smelton@bitwarden.com>
* Linting fix
Signed-off-by: Shane Melton <smelton@bitwarden.com>
* scim project stub
* some scim models and v2 controllers
* implement some v2 scim endpoints
* fix spacing
* api key auth
* EC-261 - SCIM Org API Key and connection type config
* EC-261 - Fix lint errors/formatting
* updates for okta implementation testing
* fix var ref
* updates from testing with Okta
* implement scim context via provider parsing
* support single and list of ids for add/remove groups
* log ops not handled
* touch up scim context
* group list filtering
* EC-261 - Additional SCIM provider types
* EC-265 - UseScim flag and license update
* EC-265 - SCIM provider type of default (0)
* EC-265 - Add Scim URL and update connection validation
* EC-265 - Model validation and cleanup for SCIM keys
* implement scim org connection
* EC-265 - Ensure ServiceUrl is not persisted to DB
* EC-265 - Exclude provider type from DB if not configured
* EC-261 - EF Migrations for SCIM
* add docker builds for scim
* EC-261 - Fix failing permissions tests
* EC-261 - Fix unit tests and pgsql migrations
* Formatting fixes from linter
* EC-265 - Remove service URL from scim config
* EC-265 - Fix unit tests, removed wayward validation
* EC-265 - Require self-hosted for billing sync org conn
* EC-265 - Fix formatting issues - whitespace
* EC-261 - PR feedback and cleanup
* scim constants rename
* no scim settings right now
* update project name
* delete package lock
* update appsettings configs for scim
* use default scim provider for context
Co-authored-by: Kyle Spearrin <kyle.spearrin@gmail.com>
* Add api integration tests
* Add some stuff
* Make program mockable
* Work on IntegrationTests for Identity
* Formatting
* Update packages.lock.json
* Update more packages.lock.json
* Update all packages.lock.json
* Fix InMemory configuration
* Actually fix test configuration
* Fix tests for CI
* Fix event service
* Force EF EventRepository
* Add client_credentials test
* Remove Api.IntegrationTest
* Remove Api Program changes
* Cleanup
* Add more Auth-Email tests
* Run formatting
* Address some PR feedback
* Move integration stuff to it's own common project
* Ran linter
* Add shared project to test solution
* Remove sln changes
* Clean usings
* Add more coverage
* Address PR feedback
* Add self-host option to migration runner
* Add Self-host launch options
* Add self-hosted settings override
Let's a single secrets/env config file control both
cloud and self-hosted settings by allowing
overrides to cloud settings with self-hosted
* Allow dev-signed licenses on dev self-hosted
* Allow setting bitwarden cloud api url
Useful for testing api integration between installations and cloud
* Remove testing echoes
* Remove run config property groups
* Use `getopts` for options
* Pass in full environment
* Adding a QA environment specific configuration
* separating the bitwarden environment and stripe environment checks
* adding a logging statement for the PayPal webhook key check
* adding more logging
* switched logging type
* Changing the log level on the PayPal webhook. Removing the debugging log from the Stripe Controller
* deploying directly to the production slot of the App Service
* Update Azure Service Bus package
* adding a app service shutdown to qa
* reverting QA env deploy change
* Update qa-deploy workflow with debugging statement
* Disable start/stop in QA deploy workflow
* Fix UserKdf and UserApiKey migrations to only update null values (#1494)
* Add proper New Relic NuGet package for .NET 5
* Test NewRelic changes
Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>
* increasing the log levels on all of the services to prevent logging successes
* resetting the default logging and adding in constraints in logging in Production
* EF Database Support Init (#1221)
* scaffolding for ef support
* deleted old postgres repos
* added tables to oncreate
* updated all the things to .NET 5
* Addition to #1221: Migrated DockerFiles from dotnet/3.1 to 5.0 (#1223)
* Migrated DockerFiles from dotnet/3.1 to 5.0
* Migrated SSO/Dockerfile from dotnet 3.1 to 5.0
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* EFDatabaseSupport: Updated links and description in README.md and SETUP.md (#1232)
* Updated requirements in README.md
* Updated link to documentation of app-secrets
* upgraded dotnet version to 5.0
* Ef database support implementation examples (#1265)
* mostly finished testing the user repo
* finished testing user repo
* finished org, user, ssoconfig, and ssouser ef implementations
* removed unused prop
* fixed a sql file
* fixed a spacing issue
* fixed a spacing issue
* removed extra database creation
* refactoring
* MsSql => SqlServer
* refactoring
* code review fixes
* build fix
* code review
* continued attempts to fix the the build
* skipped another test
* finished all create test
* initial pass at several repos
* continued building out repos
* initial pass at several repos
* initial pass at device repo
* initial pass at collection repo
* initial run of all Entity Framework implementations
* signup, signin, create/edit ciphers works
* sync working
* all web vault pages seem to load with 100% 200s
* bulkcopy, folders, and favorites
* group and collection management
* sso, groups, emergency access, send
* get basic creates matching on all repos
* got everything building again post merge
* removed some IDE config files
* cleanup
* no more notimplemented methods in the cipher repo
* no more not implementeds everywhere
* cleaned up schema/navigation properties and fixed tests
* removed a sql comment that was written in c# style
* fixed build issues from merge
* removed unsupported db providers
* formatting
* code review refactors
* naming cleanup for queries
* added provider methods
* cipher repo cleanup
* implemented several missing procedures from the EF implementation surround account revision dates, keys, and storage
* fixed the build
* added a null check
* consolidated some cipher repo methods
* formatting fix
* cleaned up indentation of queries
* removed .idea file
* generated postgres migrations
* added mysql migrations
* formatting
* Bug Fixes & Formatting
* Formatting
* fixed a bug with bulk import when using MySql
* code review fixes
* fixed the build
* implemented new methods
* formatting
* fixed the build
* cleaned up select statements in ef queries
* formatting
* formatting
* formatting
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>