Skip to content

Commit

Permalink
Merge pull request #20 from zitadel/metadata-byte
Browse files Browse the repository at this point in the history
fix(saml): remove base64 from handling service provider metadata
  • Loading branch information
livio-a authored Aug 22, 2022
2 parents 66dc3f9 + 21a164f commit 325db04
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 60 deletions.
22 changes: 11 additions & 11 deletions pkg/provider/post_test.go

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions pkg/provider/redirect_test.go

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions pkg/provider/serviceprovider/serviceprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import (
"github.com/zitadel/saml/pkg/provider/xml/md"
)

type ServiceProviderConfig struct {
Metadata string
type Config struct {
Metadata []byte
URL string
}

Expand All @@ -34,7 +34,7 @@ func (sp *ServiceProvider) LoginURL(id string) string {
return sp.defaultLoginURL + id
}

func NewServiceProvider(id string, config *ServiceProviderConfig, defaultLoginURL string) (*ServiceProvider, error) {
func NewServiceProvider(id string, config *Config, defaultLoginURL string) (*ServiceProvider, error) {
metadataData := make([]byte, 0)
if config.URL != "" {
body, err := xml.ReadMetadataFromURL(config.URL)
Expand All @@ -43,7 +43,7 @@ func NewServiceProvider(id string, config *ServiceProviderConfig, defaultLoginUR
}
metadataData = body
} else {
metadataData = []byte(config.Metadata)
metadataData = config.Metadata
}
metadata, err := xml.ParseMetadataXmlIntoStruct(metadataData)
if err != nil {
Expand Down
14 changes: 7 additions & 7 deletions pkg/provider/sso_test.go

Large diffs are not rendered by default.

17 changes: 2 additions & 15 deletions pkg/provider/xml/metadata.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package xml

import (
"encoding/base64"
"encoding/xml"
"fmt"
"io"
Expand All @@ -21,24 +20,12 @@ func ReadMetadataFromURL(url string) ([]byte, error) {
return nil, fmt.Errorf("error while reading metadata with statusCode: %d", resp.StatusCode)
}

body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}

bodyEncoded := base64.StdEncoding.EncodeToString(body)
return []byte(bodyEncoded), nil
return io.ReadAll(resp.Body)
}

func ParseMetadataXmlIntoStruct(xmlData []byte) (*md.EntityDescriptorType, error) {
xmlDataDecoded := make([]byte, 0)
xmlDataDecoded, err := base64.StdEncoding.DecodeString(string(xmlData))
if err != nil {
return nil, err
}

metadata := &md.EntityDescriptorType{}
if err := xml.Unmarshal(xmlDataDecoded, metadata); err != nil {
if err := xml.Unmarshal(xmlData, metadata); err != nil {
return nil, err
}
return metadata, nil
Expand Down
Loading

0 comments on commit 325db04

Please sign in to comment.