mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: apply appropriate artifactory defaults for external auth (#11580)
This commit is contained in:
@@ -531,6 +531,9 @@ func applyDefaultsToConfig(config *codersdk.ExternalAuthConfig) {
|
||||
case codersdk.EnhancedExternalAuthProviderBitBucketServer:
|
||||
copyDefaultSettings(config, bitbucketServerDefaults(config))
|
||||
return
|
||||
case codersdk.EnhancedExternalAuthProviderJFrog:
|
||||
copyDefaultSettings(config, jfrogArtifactoryDefaults(config))
|
||||
return
|
||||
default:
|
||||
// No defaults for this type. We still want to run this apply with
|
||||
// an empty set of defaults.
|
||||
@@ -623,6 +626,44 @@ func bitbucketServerDefaults(config *codersdk.ExternalAuthConfig) codersdk.Exter
|
||||
return defaults
|
||||
}
|
||||
|
||||
func jfrogArtifactoryDefaults(config *codersdk.ExternalAuthConfig) codersdk.ExternalAuthConfig {
|
||||
defaults := codersdk.ExternalAuthConfig{
|
||||
DisplayName: "JFrog Artifactory",
|
||||
Scopes: []string{"applied-permissions/user"},
|
||||
DisplayIcon: "/icon/jfrog.svg",
|
||||
}
|
||||
// Artifactory servers will have some base url, e.g. https://jfrog.coder.com.
|
||||
// We will grab this from the Auth URL. This choice is not arbitrary. It is a
|
||||
// static string for all integrations on the same artifactory.
|
||||
if config.AuthURL == "" {
|
||||
// No auth url, means we cannot guess the urls.
|
||||
return defaults
|
||||
}
|
||||
|
||||
auth, err := url.Parse(config.AuthURL)
|
||||
if err != nil {
|
||||
// We need a valid URL to continue with.
|
||||
return defaults
|
||||
}
|
||||
|
||||
if config.ClientID == "" {
|
||||
return defaults
|
||||
}
|
||||
|
||||
tokenURL := auth.ResolveReference(&url.URL{Path: fmt.Sprintf("/access/api/v1/integrations/%s/token", config.ClientID)})
|
||||
defaults.TokenURL = tokenURL.String()
|
||||
|
||||
// validate needs to return a 200 when logged in and a 401 when unauthenticated.
|
||||
validate := auth.ResolveReference(&url.URL{Path: "/access/api/v1/system/ping"})
|
||||
defaults.ValidateURL = validate.String()
|
||||
|
||||
// Some options omitted:
|
||||
// - Regex: Artifactory can span pretty much all domains (git, docker, etc).
|
||||
// I do not think we can intelligently guess this as a default.
|
||||
|
||||
return defaults
|
||||
}
|
||||
|
||||
var staticDefaults = map[codersdk.EnhancedExternalAuthProvider]codersdk.ExternalAuthConfig{
|
||||
codersdk.EnhancedExternalAuthProviderAzureDevops: {
|
||||
AuthURL: "https://app.vssps.visualstudio.com/oauth2/authorize",
|
||||
|
||||
Reference in New Issue
Block a user