Implement redirect path for saml

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-02-11 10:41:09 +04:00
parent 5254be38cb
commit a8d1ce0097
13 changed files with 76 additions and 33 deletions

View File

@@ -107,6 +107,7 @@ func (s *Service) GenerateSpMetadata() ([]byte, error) {
func (s *Service) InitiateLogin(
ctx context.Context,
configID gid.GID,
redirectPath string,
) (*url.URL, error) {
var (
now = time.Now()
@@ -131,7 +132,7 @@ func (s *Service) InitiateLogin(
return NewSAMLDisabledError()
}
sp, err := s.serviceProvider(ctx, config)
sp, err := s.serviceProvider(config)
if err != nil {
return fmt.Errorf("cannot build service provider: %w", err)
}
@@ -152,7 +153,11 @@ func (s *Service) InitiateLogin(
return fmt.Errorf("cannot insert SAML request: %w", err)
}
redirect, err = req.Redirect(config.ID.String(), sp)
relayState := url.Values{}
relayState.Add("config-id", config.ID.String())
relayState.Add("redirect-path", redirectPath)
redirect, err = req.Redirect(url.QueryEscape(relayState.Encode()), sp)
if err != nil {
return fmt.Errorf("cannot generate redirect URL: %w", err)
}
@@ -196,7 +201,7 @@ func (s *Service) HandleAssertion(
return NewSAMLDisabledError()
}
sp, err := s.serviceProvider(ctx, config)
sp, err := s.serviceProvider(config)
if err != nil {
return fmt.Errorf("cannot create service provider: %w", err)
}

View File

@@ -15,7 +15,6 @@
package saml
import (
"context"
"encoding/base64"
"fmt"
@@ -24,7 +23,6 @@ import (
)
func (s *Service) serviceProvider(
ctx context.Context,
config *coredata.SAMLConfiguration,
) (*saml.ServiceProvider, error) {
cert, err := config.GetIdPCertificate()