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) { 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 { 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, Provider: params.Body.OauthProvider,
EmailDomains: params.Body.OauthEmailDomains, EmailDomains: params.Body.OauthEmailDomains,
AuthorizationCheckInterval: params.Body.OauthAuthorizationCheckInterval, AuthorizationCheckInterval: params.Body.OauthAuthorizationCheckInterval,
}, edge) },
}
cfgZId, err := zrokEdgeSdk.CreateConfig(zrokProxyConfigId, envZId, shrToken, options, edge)
if err != nil { if err != nil {
return "", nil, err 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) { 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 { 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, Provider: params.Body.OauthProvider,
EmailDomains: params.Body.OauthEmailDomains, EmailDomains: params.Body.OauthEmailDomains,
AuthorizationCheckInterval: params.Body.OauthAuthorizationCheckInterval, AuthorizationCheckInterval: params.Body.OauthAuthorizationCheckInterval,
}, edge) },
}
cfgId, err := zrokEdgeSdk.CreateConfig(zrokProxyConfigId, envZId, shrToken, options, edge)
if err != nil { if err != nil {
return "", nil, err return "", nil, err
} }

View File

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

View File

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