mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 15:42:48 -05:00
feat: generate txt record server-side and remove initial domain verification, refs AC-2350 (#3940)
This commit is contained in:
@ -80,7 +80,6 @@ public class OrganizationDomainController : Controller
|
||||
var organizationDomain = new OrganizationDomain
|
||||
{
|
||||
OrganizationId = orgId,
|
||||
Txt = model.Txt,
|
||||
DomainName = model.DomainName.ToLower()
|
||||
};
|
||||
|
||||
|
@ -4,9 +4,6 @@ namespace Bit.Api.AdminConsole.Models.Request;
|
||||
|
||||
public class OrganizationDomainRequestModel
|
||||
{
|
||||
[Required]
|
||||
public string Txt { get; set; }
|
||||
|
||||
[Required]
|
||||
public string DomainName { get; set; }
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ using Bit.Core.Exceptions;
|
||||
using Bit.Core.Repositories;
|
||||
using Bit.Core.Services;
|
||||
using Bit.Core.Settings;
|
||||
using Bit.Core.Utilities;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Bit.Core.AdminConsole.OrganizationFeatures.OrganizationDomains;
|
||||
@ -50,26 +51,16 @@ public class CreateOrganizationDomainCommand : ICreateOrganizationDomainCommand
|
||||
throw new ConflictException("A domain already exists for this organization.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (await _dnsResolverService.ResolveAsync(organizationDomain.DomainName, organizationDomain.Txt))
|
||||
{
|
||||
organizationDomain.SetVerifiedDate();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, "Error verifying Organization domain.");
|
||||
}
|
||||
|
||||
// Generate and set DNS TXT Record
|
||||
// DNS-Based Service Discovery RFC: https://www.ietf.org/rfc/rfc6763.txt; see section 6.1
|
||||
// Google uses 43 chars for their TXT record value: https://support.google.com/a/answer/2716802
|
||||
// A random 44 character string was used here to keep parity with prior client-side generation of 47 characters
|
||||
organizationDomain.Txt = string.Join("=", "bw", CoreHelpers.RandomString(44));
|
||||
organizationDomain.SetNextRunDate(_globalSettings.DomainVerification.VerificationInterval);
|
||||
organizationDomain.SetLastCheckedDate();
|
||||
|
||||
var orgDomain = await _organizationDomainRepository.CreateAsync(organizationDomain);
|
||||
|
||||
await _eventService.LogOrganizationDomainEventAsync(orgDomain, EventType.OrganizationDomain_Added);
|
||||
await _eventService.LogOrganizationDomainEventAsync(orgDomain,
|
||||
orgDomain.VerifiedDate != null ? EventType.OrganizationDomain_Verified : EventType.OrganizationDomain_NotVerified);
|
||||
|
||||
return orgDomain;
|
||||
}
|
||||
|
Reference in New Issue
Block a user