reworking of zrok.proxy.v1 and associated config mapping (#404)

This commit is contained in:
Michael Quigley 2023-09-25 14:04:05 -04:00
parent fe69a8094b
commit ceee205239
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
4 changed files with 47 additions and 37 deletions

View File

@ -14,15 +14,20 @@ func newPrivateResourceAllocator() *privateResourceAllocator {
}
func (a *privateResourceAllocator) allocate(envZId, shrToken string, params share.ShareParams, edge *rest_management_api_client.ZitiEdgeManagement) (shrZId string, frontendEndpoints []string, err error) {
var authUsers []*sdk.AuthUser
var authUsers []*sdk.AuthUserConfig
for _, authUser := range params.Body.AuthUsers {
authUsers = append(authUsers, &sdk.AuthUser{authUser.Username, authUser.Password})
authUsers = append(authUsers, &sdk.AuthUserConfig{Username: authUser.Username, Password: authUser.Password})
}
cfgZId, err := zrokEdgeSdk.CreateConfig(zrokProxyConfigId, envZId, shrToken, params.Body.AuthScheme, authUsers, &zrokEdgeSdk.OauthOptions{
options := &zrokEdgeSdk.FrontendOptions{
AuthScheme: params.Body.AuthScheme,
AuthUsers: authUsers,
OAuth: &sdk.OAuthConfig{
Provider: params.Body.OauthProvider,
EmailDomains: params.Body.OauthEmailDomains,
AuthorizationCheckInterval: params.Body.OauthAuthorizationCheckInterval,
}, edge)
},
}
cfgZId, err := zrokEdgeSdk.CreateConfig(zrokProxyConfigId, envZId, shrToken, options, edge)
if err != nil {
return "", nil, err
}

View File

@ -14,15 +14,20 @@ func newPublicResourceAllocator() *publicResourceAllocator {
}
func (a *publicResourceAllocator) allocate(envZId, shrToken string, frontendZIds, frontendTemplates []string, params share.ShareParams, edge *rest_management_api_client.ZitiEdgeManagement) (shrZId string, frontendEndpoints []string, err error) {
var authUsers []*sdk.AuthUser
var authUsers []*sdk.AuthUserConfig
for _, authUser := range params.Body.AuthUsers {
authUsers = append(authUsers, &sdk.AuthUser{authUser.Username, authUser.Password})
authUsers = append(authUsers, &sdk.AuthUserConfig{Username: authUser.Username, Password: authUser.Password})
}
cfgId, err := zrokEdgeSdk.CreateConfig(zrokProxyConfigId, envZId, shrToken, params.Body.AuthScheme, authUsers, &zrokEdgeSdk.OauthOptions{
options := &zrokEdgeSdk.FrontendOptions{
AuthScheme: params.Body.AuthScheme,
AuthUsers: authUsers,
OAuth: &sdk.OAuthConfig{
Provider: params.Body.OauthProvider,
EmailDomains: params.Body.OauthEmailDomains,
AuthorizationCheckInterval: params.Body.OauthAuthorizationCheckInterval,
}, edge)
},
}
cfgId, err := zrokEdgeSdk.CreateConfig(zrokProxyConfigId, envZId, shrToken, options, edge)
if err != nil {
return "", nil, err
}

View File

@ -11,31 +11,31 @@ import (
"time"
)
type OauthOptions struct {
Provider string
EmailDomains []string
AuthorizationCheckInterval string
type FrontendOptions struct {
AuthScheme string
AuthUsers []*sdk.AuthUserConfig
OAuth *sdk.OAuthConfig
}
func CreateConfig(cfgTypeZId, envZId, shrToken string, authSchemeStr string, authUsers []*sdk.AuthUser, oauthOptions *OauthOptions, edge *rest_management_api_client.ZitiEdgeManagement) (cfgZId string, err error) {
authScheme, err := sdk.ParseAuthScheme(authSchemeStr)
func CreateConfig(cfgTypeZId, envZId, shrToken string, options *FrontendOptions, edge *rest_management_api_client.ZitiEdgeManagement) (cfgZId string, err error) {
authScheme, err := sdk.ParseAuthScheme(options.AuthScheme)
if err != nil {
return "", err
}
cfg := &sdk.ProxyConfig{
cfg := &sdk.FrontendConfig{
AuthScheme: authScheme,
}
if cfg.AuthScheme == sdk.Basic {
cfg.BasicAuth = &sdk.BasicAuth{}
for _, authUser := range authUsers {
cfg.BasicAuth.Users = append(cfg.BasicAuth.Users, &sdk.AuthUser{Username: authUser.Username, Password: authUser.Password})
cfg.BasicAuth = &sdk.BasicAuthConfig{}
for _, authUser := range options.AuthUsers {
cfg.BasicAuth.Users = append(cfg.BasicAuth.Users, &sdk.AuthUserConfig{Username: authUser.Username, Password: authUser.Password})
}
}
if cfg.AuthScheme == sdk.Oauth && oauthOptions != nil {
cfg.OauthAuth = &sdk.OauthAuth{
Provider: oauthOptions.Provider,
EmailDomains: oauthOptions.EmailDomains,
AuthorizationCheckInterval: oauthOptions.AuthorizationCheckInterval,
if cfg.AuthScheme == sdk.Oauth && options.OAuth != nil {
cfg.OAuthAuth = &sdk.OAuthConfig{
Provider: options.OAuth.Provider,
EmailDomains: options.OAuth.EmailDomains,
AuthorizationCheckInterval: options.OAuth.AuthorizationCheckInterval,
}
}
cfgCrt := &rest_model.ConfigCreate{

View File

@ -4,22 +4,22 @@ import "github.com/pkg/errors"
const ZrokProxyConfig = "zrok.proxy.v1"
type ProxyConfig struct {
type FrontendConfig struct {
AuthScheme AuthScheme `json:"auth_scheme"`
BasicAuth *BasicAuth `json:"basic_auth"`
OauthAuth *OauthAuth `json:"oauth"`
BasicAuth *BasicAuthConfig `json:"basic_auth"`
OAuthAuth *OAuthConfig `json:"oauth"`
}
type BasicAuth struct {
Users []*AuthUser `json:"users"`
type BasicAuthConfig struct {
Users []*AuthUserConfig `json:"users"`
}
type AuthUser struct {
type AuthUserConfig struct {
Username string `json:"username"`
Password string `json:"password"`
}
type OauthAuth struct {
type OAuthConfig struct {
Provider string `json:"provider"`
EmailDomains []string `json:"email_domains"`
AuthorizationCheckInterval string `json:"authorization_check_interval"`