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:
@@ -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,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user