1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-10 21:33:27 +00:00

Defect/SG-1083 - Fix SSO Form Validation (#4791)

* SG-1083 - Refactor SSO form validation to work per EC requirements

* Move SSO component into its own folder for better folder management for future components in auth.

* Defect SG-1086 - Domain verification table: Change domain name from anchor tag to button + add title

* SG-1083 - Send null instead of empty string for sso identifier to avoid duplicate key in database issues.

* SG-1086 - Add button type to domain verification button to pass lint rules.
This commit is contained in:
Jared Snider
2023-02-17 16:55:57 -05:00
committed by GitHub
parent 450df353a4
commit a348c78a79
8 changed files with 134 additions and 66 deletions

View File

@@ -6,9 +6,12 @@ import {
Saml2SigningBehavior,
SsoType,
} from "../../enums/sso";
import { SsoConfigApi } from "../api/sso-config.api";
import { OrganizationSsoResponse } from "../response/organization-sso.response";
export class SsoConfigView extends View {
enabled: boolean;
ssoIdentifier: string;
configType: SsoType;
keyConnectorEnabled: boolean;
@@ -48,55 +51,63 @@ export class SsoConfigView extends View {
idpWantAuthnRequestsSigned: boolean;
};
constructor(api: SsoConfigApi) {
constructor(orgSsoResponse: OrganizationSsoResponse) {
super();
if (api == null) {
if (orgSsoResponse == null) {
return;
}
this.configType = api.configType;
this.enabled = orgSsoResponse.enabled;
this.ssoIdentifier = orgSsoResponse.identifier;
this.keyConnectorEnabled = api.keyConnectorEnabled;
this.keyConnectorUrl = api.keyConnectorUrl;
if (orgSsoResponse.data == null) {
return;
}
this.configType = orgSsoResponse.data.configType;
this.keyConnectorEnabled = orgSsoResponse.data.keyConnectorEnabled;
this.keyConnectorUrl = orgSsoResponse.data.keyConnectorUrl;
if (this.configType === SsoType.OpenIdConnect) {
this.openId = {
authority: api.authority,
clientId: api.clientId,
clientSecret: api.clientSecret,
metadataAddress: api.metadataAddress,
redirectBehavior: api.redirectBehavior,
getClaimsFromUserInfoEndpoint: api.getClaimsFromUserInfoEndpoint,
additionalScopes: api.additionalScopes,
additionalUserIdClaimTypes: api.additionalUserIdClaimTypes,
additionalEmailClaimTypes: api.additionalEmailClaimTypes,
additionalNameClaimTypes: api.additionalNameClaimTypes,
acrValues: api.acrValues,
expectedReturnAcrValue: api.expectedReturnAcrValue,
authority: orgSsoResponse.data.authority,
clientId: orgSsoResponse.data.clientId,
clientSecret: orgSsoResponse.data.clientSecret,
metadataAddress: orgSsoResponse.data.metadataAddress,
redirectBehavior: orgSsoResponse.data.redirectBehavior,
getClaimsFromUserInfoEndpoint: orgSsoResponse.data.getClaimsFromUserInfoEndpoint,
additionalScopes: orgSsoResponse.data.additionalScopes,
additionalUserIdClaimTypes: orgSsoResponse.data.additionalUserIdClaimTypes,
additionalEmailClaimTypes: orgSsoResponse.data.additionalEmailClaimTypes,
additionalNameClaimTypes: orgSsoResponse.data.additionalNameClaimTypes,
acrValues: orgSsoResponse.data.acrValues,
expectedReturnAcrValue: orgSsoResponse.data.expectedReturnAcrValue,
};
} else if (this.configType === SsoType.Saml2) {
this.saml = {
spNameIdFormat: api.spNameIdFormat,
spOutboundSigningAlgorithm: api.spOutboundSigningAlgorithm,
spSigningBehavior: api.spSigningBehavior,
spMinIncomingSigningAlgorithm: api.spMinIncomingSigningAlgorithm,
spWantAssertionsSigned: api.spWantAssertionsSigned,
spValidateCertificates: api.spValidateCertificates,
spNameIdFormat: orgSsoResponse.data.spNameIdFormat,
spOutboundSigningAlgorithm: orgSsoResponse.data.spOutboundSigningAlgorithm,
spSigningBehavior: orgSsoResponse.data.spSigningBehavior,
spMinIncomingSigningAlgorithm: orgSsoResponse.data.spMinIncomingSigningAlgorithm,
spWantAssertionsSigned: orgSsoResponse.data.spWantAssertionsSigned,
spValidateCertificates: orgSsoResponse.data.spValidateCertificates,
idpEntityId: api.idpEntityId,
idpBindingType: api.idpBindingType,
idpSingleSignOnServiceUrl: api.idpSingleSignOnServiceUrl,
idpSingleLogoutServiceUrl: api.idpSingleLogoutServiceUrl,
idpX509PublicCert: api.idpX509PublicCert,
idpOutboundSigningAlgorithm: api.idpOutboundSigningAlgorithm,
idpAllowUnsolicitedAuthnResponse: api.idpAllowUnsolicitedAuthnResponse,
idpWantAuthnRequestsSigned: api.idpWantAuthnRequestsSigned,
idpEntityId: orgSsoResponse.data.idpEntityId,
idpBindingType: orgSsoResponse.data.idpBindingType,
idpSingleSignOnServiceUrl: orgSsoResponse.data.idpSingleSignOnServiceUrl,
idpSingleLogoutServiceUrl: orgSsoResponse.data.idpSingleLogoutServiceUrl,
idpX509PublicCert: orgSsoResponse.data.idpX509PublicCert,
idpOutboundSigningAlgorithm: orgSsoResponse.data.idpOutboundSigningAlgorithm,
idpAllowUnsolicitedAuthnResponse: orgSsoResponse.data.idpAllowUnsolicitedAuthnResponse,
idpWantAuthnRequestsSigned: orgSsoResponse.data.idpWantAuthnRequestsSigned,
// Value is inverted in the view model (allow instead of disable)
idpAllowOutboundLogoutRequests:
api.idpDisableOutboundLogoutRequests == null
orgSsoResponse.data.idpDisableOutboundLogoutRequests == null
? null
: !api.idpDisableOutboundLogoutRequests,
: !orgSsoResponse.data.idpDisableOutboundLogoutRequests,
};
}
}