Optimise: Build auth URL.

This commit is contained in:
2024-10-03 14:00:41 +01:00
parent 5652ade5e2
commit 4968c5f93a
+16 -9
View File
@@ -327,20 +327,27 @@ func (t *TraefikOidc) verifyToken(token string) error {
return t.tokenVerifier.VerifyToken(token) return t.tokenVerifier.VerifyToken(token)
} }
var authURLBuilder strings.Builder
func (t *TraefikOidc) buildAuthURL(redirectURL, state, nonce string) string { func (t *TraefikOidc) buildAuthURL(redirectURL, state, nonce string) string {
params := url.Values{ authURLBuilder.Reset()
"client_id": {t.clientID}, authURLBuilder.Grow(256) // Pre-allocate some space
"response_type": {"code"}, authURLBuilder.WriteString(t.authURL)
"redirect_uri": {redirectURL}, authURLBuilder.WriteString("?client_id=")
"state": {state}, authURLBuilder.WriteString(t.clientID)
"nonce": {nonce}, authURLBuilder.WriteString("&response_type=code&redirect_uri=")
} authURLBuilder.WriteString(url.QueryEscape(redirectURL))
authURLBuilder.WriteString("&state=")
authURLBuilder.WriteString(state)
authURLBuilder.WriteString("&nonce=")
authURLBuilder.WriteString(nonce)
if len(t.scopes) > 0 { if len(t.scopes) > 0 {
params.Set("scope", strings.Join(t.scopes, " ")) authURLBuilder.WriteString("&scope=")
authURLBuilder.WriteString(strings.Join(t.scopes, "+"))
} }
return fmt.Sprintf("%s?%s", t.authURL, params.Encode()) return authURLBuilder.String()
} }
func (t *TraefikOidc) startTokenCleanup() { func (t *TraefikOidc) startTokenCleanup() {