mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:37:32 +00:00
feat: add azure provider templates (#5441)
Adds possibility to manage and use Microsoft Azure template based providers
This commit is contained in:
@@ -37,6 +37,7 @@ type IDPTemplate struct {
|
||||
*OAuthIDPTemplate
|
||||
*OIDCIDPTemplate
|
||||
*JWTIDPTemplate
|
||||
*AzureADIDPTemplate
|
||||
*GitHubIDPTemplate
|
||||
*GitHubEnterpriseIDPTemplate
|
||||
*GitLabIDPTemplate
|
||||
@@ -77,6 +78,15 @@ type JWTIDPTemplate struct {
|
||||
Endpoint string
|
||||
}
|
||||
|
||||
type AzureADIDPTemplate struct {
|
||||
IDPID string
|
||||
ClientID string
|
||||
ClientSecret *crypto.CryptoValue
|
||||
Scopes database.StringArray
|
||||
Tenant string
|
||||
IsEmailVerified bool
|
||||
}
|
||||
|
||||
type GitHubIDPTemplate struct {
|
||||
IDPID string
|
||||
ClientID string
|
||||
@@ -301,6 +311,41 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
var (
|
||||
azureadIdpTemplateTable = table{
|
||||
name: projection.IDPTemplateAzureADTable,
|
||||
instanceIDCol: projection.AzureADInstanceIDCol,
|
||||
}
|
||||
AzureADIDCol = Column{
|
||||
name: projection.AzureADIDCol,
|
||||
table: azureadIdpTemplateTable,
|
||||
}
|
||||
AzureADInstanceIDCol = Column{
|
||||
name: projection.AzureADInstanceIDCol,
|
||||
table: azureadIdpTemplateTable,
|
||||
}
|
||||
AzureADClientIDCol = Column{
|
||||
name: projection.AzureADClientIDCol,
|
||||
table: azureadIdpTemplateTable,
|
||||
}
|
||||
AzureADClientSecretCol = Column{
|
||||
name: projection.AzureADClientSecretCol,
|
||||
table: azureadIdpTemplateTable,
|
||||
}
|
||||
AzureADScopesCol = Column{
|
||||
name: projection.AzureADScopesCol,
|
||||
table: azureadIdpTemplateTable,
|
||||
}
|
||||
AzureADTenantCol = Column{
|
||||
name: projection.AzureADTenantCol,
|
||||
table: azureadIdpTemplateTable,
|
||||
}
|
||||
AzureADIsEmailVerified = Column{
|
||||
name: projection.AzureADIsEmailVerified,
|
||||
table: azureadIdpTemplateTable,
|
||||
}
|
||||
)
|
||||
|
||||
var (
|
||||
githubIdpTemplateTable = table{
|
||||
name: projection.IDPTemplateGitHubTable,
|
||||
@@ -683,6 +728,13 @@ func prepareIDPTemplateByIDQuery(ctx context.Context, db prepareDatabase) (sq.Se
|
||||
JWTEndpointCol.identifier(),
|
||||
JWTKeysEndpointCol.identifier(),
|
||||
JWTHeaderNameCol.identifier(),
|
||||
// azure
|
||||
AzureADIDCol.identifier(),
|
||||
AzureADClientIDCol.identifier(),
|
||||
AzureADClientSecretCol.identifier(),
|
||||
AzureADScopesCol.identifier(),
|
||||
AzureADTenantCol.identifier(),
|
||||
AzureADIsEmailVerified.identifier(),
|
||||
// github
|
||||
GitHubIDCol.identifier(),
|
||||
GitHubClientIDCol.identifier(),
|
||||
@@ -739,6 +791,7 @@ func prepareIDPTemplateByIDQuery(ctx context.Context, db prepareDatabase) (sq.Se
|
||||
LeftJoin(join(OAuthIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(OIDCIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(JWTIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(AzureADIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(GitHubIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(GitHubEnterpriseIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(GitLabIDCol, IDPTemplateIDCol)).
|
||||
@@ -772,6 +825,13 @@ func prepareIDPTemplateByIDQuery(ctx context.Context, db prepareDatabase) (sq.Se
|
||||
jwtKeysEndpoint := sql.NullString{}
|
||||
jwtHeaderName := sql.NullString{}
|
||||
|
||||
azureadID := sql.NullString{}
|
||||
azureadClientID := sql.NullString{}
|
||||
azureadClientSecret := new(crypto.CryptoValue)
|
||||
azureadScopes := database.StringArray{}
|
||||
azureadTenant := sql.NullString{}
|
||||
azureadIsEmailVerified := sql.NullBool{}
|
||||
|
||||
githubID := sql.NullString{}
|
||||
githubClientID := sql.NullString{}
|
||||
githubClientSecret := new(crypto.CryptoValue)
|
||||
@@ -859,6 +919,13 @@ func prepareIDPTemplateByIDQuery(ctx context.Context, db prepareDatabase) (sq.Se
|
||||
&jwtEndpoint,
|
||||
&jwtKeysEndpoint,
|
||||
&jwtHeaderName,
|
||||
// azure
|
||||
&azureadID,
|
||||
&azureadClientID,
|
||||
&azureadClientSecret,
|
||||
&azureadScopes,
|
||||
&azureadTenant,
|
||||
&azureadIsEmailVerified,
|
||||
// github
|
||||
&githubID,
|
||||
&githubClientID,
|
||||
@@ -951,6 +1018,16 @@ func prepareIDPTemplateByIDQuery(ctx context.Context, db prepareDatabase) (sq.Se
|
||||
Endpoint: jwtEndpoint.String,
|
||||
}
|
||||
}
|
||||
if azureadID.Valid {
|
||||
idpTemplate.AzureADIDPTemplate = &AzureADIDPTemplate{
|
||||
IDPID: azureadID.String,
|
||||
ClientID: azureadClientID.String,
|
||||
ClientSecret: azureadClientSecret,
|
||||
Scopes: azureadScopes,
|
||||
Tenant: azureadTenant.String,
|
||||
IsEmailVerified: azureadIsEmailVerified.Bool,
|
||||
}
|
||||
}
|
||||
if githubID.Valid {
|
||||
idpTemplate.GitHubIDPTemplate = &GitHubIDPTemplate{
|
||||
IDPID: githubID.String,
|
||||
@@ -1064,6 +1141,13 @@ func prepareIDPTemplatesQuery(ctx context.Context, db prepareDatabase) (sq.Selec
|
||||
JWTEndpointCol.identifier(),
|
||||
JWTKeysEndpointCol.identifier(),
|
||||
JWTHeaderNameCol.identifier(),
|
||||
// azure
|
||||
AzureADIDCol.identifier(),
|
||||
AzureADClientIDCol.identifier(),
|
||||
AzureADClientSecretCol.identifier(),
|
||||
AzureADScopesCol.identifier(),
|
||||
AzureADTenantCol.identifier(),
|
||||
AzureADIsEmailVerified.identifier(),
|
||||
// github
|
||||
GitHubIDCol.identifier(),
|
||||
GitHubClientIDCol.identifier(),
|
||||
@@ -1121,6 +1205,7 @@ func prepareIDPTemplatesQuery(ctx context.Context, db prepareDatabase) (sq.Selec
|
||||
LeftJoin(join(OAuthIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(OIDCIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(JWTIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(AzureADIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(GitHubIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(GitHubEnterpriseIDCol, IDPTemplateIDCol)).
|
||||
LeftJoin(join(GitLabIDCol, IDPTemplateIDCol)).
|
||||
@@ -1157,6 +1242,13 @@ func prepareIDPTemplatesQuery(ctx context.Context, db prepareDatabase) (sq.Selec
|
||||
jwtKeysEndpoint := sql.NullString{}
|
||||
jwtHeaderName := sql.NullString{}
|
||||
|
||||
azureadID := sql.NullString{}
|
||||
azureadClientID := sql.NullString{}
|
||||
azureadClientSecret := new(crypto.CryptoValue)
|
||||
azureadScopes := database.StringArray{}
|
||||
azureadTenant := sql.NullString{}
|
||||
azureadIsEmailVerified := sql.NullBool{}
|
||||
|
||||
githubID := sql.NullString{}
|
||||
githubClientID := sql.NullString{}
|
||||
githubClientSecret := new(crypto.CryptoValue)
|
||||
@@ -1244,6 +1336,13 @@ func prepareIDPTemplatesQuery(ctx context.Context, db prepareDatabase) (sq.Selec
|
||||
&jwtEndpoint,
|
||||
&jwtKeysEndpoint,
|
||||
&jwtHeaderName,
|
||||
// azure
|
||||
&azureadID,
|
||||
&azureadClientID,
|
||||
&azureadClientSecret,
|
||||
&azureadScopes,
|
||||
&azureadTenant,
|
||||
&azureadIsEmailVerified,
|
||||
// github
|
||||
&githubID,
|
||||
&githubClientID,
|
||||
@@ -1335,6 +1434,16 @@ func prepareIDPTemplatesQuery(ctx context.Context, db prepareDatabase) (sq.Selec
|
||||
Endpoint: jwtEndpoint.String,
|
||||
}
|
||||
}
|
||||
if azureadID.Valid {
|
||||
idpTemplate.AzureADIDPTemplate = &AzureADIDPTemplate{
|
||||
IDPID: azureadID.String,
|
||||
ClientID: azureadClientID.String,
|
||||
ClientSecret: azureadClientSecret,
|
||||
Scopes: azureadScopes,
|
||||
Tenant: azureadTenant.String,
|
||||
IsEmailVerified: azureadIsEmailVerified.Bool,
|
||||
}
|
||||
}
|
||||
if githubID.Valid {
|
||||
idpTemplate.GitHubIDPTemplate = &GitHubIDPTemplate{
|
||||
IDPID: githubID.String,
|
||||
|
Reference in New Issue
Block a user