MCPcopy Index your code
hub / github.com/coder/coder / azureDevopsEntraDefaults

Function azureDevopsEntraDefaults

coderd/externalauth/externalauth.go:1235–1270  ·  view source on GitHub ↗
(config *codersdk.ExternalAuthConfig)

Source from the content-addressed store, hash-verified

1233}
1234
1235func azureDevopsEntraDefaults(config *codersdk.ExternalAuthConfig) codersdk.ExternalAuthConfig {
1236 defaults := codersdk.ExternalAuthConfig{
1237 DisplayName: "Azure DevOps (Entra)",
1238 DisplayIcon: "/icon/azure-devops.svg",
1239 Regex: `^(https?://)?dev\.azure\.com(/.*)?$`,
1240 // TODO: Investigate if 'S256' is accepted and PKCE is supported
1241 CodeChallengeMethodsSupported: []string{string(promoauth.PKCEChallengeMethodNone)},
1242 }
1243 // The tenant ID is required for urls and is in the auth url.
1244 if config.AuthURL == "" {
1245 // No auth url, means we cannot guess the urls.
1246 return defaults
1247 }
1248
1249 auth, err := url.Parse(config.AuthURL)
1250 if err != nil {
1251 // We need a valid URL to continue with.
1252 return defaults
1253 }
1254
1255 // Only extract the tenant ID if the path is what we expect.
1256 // The path should be /{tenantId}/oauth2/authorize.
1257 parts := strings.Split(auth.Path, "/")
1258 if len(parts) < 4 && parts[2] != "oauth2" || parts[3] != "authorize" {
1259 // Not sure what this path is, abort.
1260 return defaults
1261 }
1262 tenantID := parts[1]
1263
1264 tokenURL := auth.ResolveReference(&url.URL{Path: fmt.Sprintf("/%s/oauth2/token", tenantID)})
1265 defaults.TokenURL = tokenURL.String()
1266
1267 // TODO: Discover a validate url for Azure DevOps.
1268
1269 return defaults
1270}
1271
1272var staticDefaults = map[codersdk.EnhancedExternalAuthProvider]codersdk.ExternalAuthConfig{
1273 codersdk.EnhancedExternalAuthProviderAzureDevops: {

Callers 1

applyDefaultsToConfigFunction · 0.85

Calls 2

ParseMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected