func MapSchemaClientToClient(sc Client) (client.Client, error) { c := client.Client{ Credentials: oidc.ClientCredentials{ ID: sc.Id, Secret: sc.Secret, }, Metadata: oidc.ClientMetadata{ RedirectURIs: make([]url.URL, len(sc.RedirectURIs)), }, Public: sc.Public, } for i, ru := range sc.RedirectURIs { if ru == "" { return client.Client{}, ErrorNoRedirectURI } u, err := url.Parse(ru) if err != nil { return client.Client{}, ErrorInvalidRedirectURI } c.Metadata.RedirectURIs[i] = *u } c.Metadata.ClientName = sc.ClientName if sc.LogoURI != "" { logoURI, err := url.Parse(sc.LogoURI) if err != nil { return client.Client{}, ErrorInvalidLogoURI } c.Metadata.LogoURI = logoURI } if sc.ClientURI != "" { clientURI, err := url.Parse(sc.ClientURI) if err != nil { return client.Client{}, ErrorInvalidClientURI } c.Metadata.ClientURI = clientURI } c.Admin = sc.IsAdmin return c, nil }
func (m *ClientManager) generateClientCredentials(cli client.Client) (client.Client, error) { // Generate Client ID if len(cli.Metadata.RedirectURIs) < 1 { return cli, errors.New("no client redirect url given") } clientID, err := m.clientIDGenerator(cli.Metadata.RedirectURIs[0].Host) if err != nil { return cli, err } // Generate Secret secret, err := m.secretGenerator() if err != nil { return cli, err } clientSecret := base64.URLEncoding.EncodeToString(secret) cli.Credentials = oidc.ClientCredentials{ ID: clientID, Secret: clientSecret, } return cli, nil }
func (m *ClientManager) addClientCredentials(cli *client.Client) error { var seed string if cli.Public { seed = cli.Metadata.ClientName } else { seed = cli.Metadata.RedirectURIs[0].Host } var err error var clientID string if cli.Credentials.ID != "" { clientID = cli.Credentials.ID } else { // Generate Client ID clientID, err = m.clientIDGenerator(seed) if err != nil { return err } } var clientSecret string if cli.Credentials.Secret != "" { clientSecret = cli.Credentials.Secret } else { // Generate Secret secret, err := m.secretGenerator() if err != nil { return err } clientSecret = base64.URLEncoding.EncodeToString(secret) } cli.Credentials = oidc.ClientCredentials{ ID: clientID, Secret: clientSecret, } return nil }