Browse Source

Split API url and Token issuer URL

master
harture 7 years ago
parent
commit
0d9651c897
  1. 11
      integration/integration.go
  2. 28
      keycloak_client.go

11
integration/integration.go

@ -15,7 +15,6 @@ const (
user = "version" user = "version"
) )
// This should be oncverted into // This should be oncverted into
// GetClient(accessToken string, realmName, idClient string) (kc.ClientRepresentation, error) // GetClient(accessToken string, realmName, idClient string) (kc.ClientRepresentation, error)
// GetClientRoleMappings(accessToken string, realmName, userID, clientID string) ([]kc.RoleRepresentation, error) // GetClientRoleMappings(accessToken string, realmName, userID, clientID string) ([]kc.RoleRepresentation, error)
@ -137,7 +136,6 @@ func main() {
log.Fatalf("could not create test users: %v", err) log.Fatalf("could not create test users: %v", err)
} }
} }
// Check that all users where created. // Check that all users where created.
{ {
@ -345,15 +343,14 @@ func main() {
} }
} }
func getKeycloakConfig() *keycloak.Config { func getKeycloakConfig() *keycloak.Config {
var adr = pflag.String("url", "http://localhost:8080", "keycloak address") var apiAddr = pflag.String("urlKc", "http://localhost:8080", "keycloak address")
var tokenAddr = pflag.String("url", "http://127.0.0.1:8080", "keycloak address")
pflag.Parse() pflag.Parse()
return &keycloak.Config{ return &keycloak.Config{
Addr: *adr, AddrTokenProvider: *tokenAddr,
AddrAPI: *apiAddr,
Timeout: 10 * time.Second, Timeout: 10 * time.Second,
} }
} }

28
keycloak_client.go

@ -17,35 +17,47 @@ import (
// Config is the keycloak client http config. // Config is the keycloak client http config.
type Config struct { type Config struct {
Addr string AddrTokenProvider string
AddrAPI string
Timeout time.Duration Timeout time.Duration
} }
// Client is the keycloak client. // Client is the keycloak client.
type Client struct { type Client struct {
url *url.URL tokenProviderUrl *url.URL
apiUrl *url.URL
httpClient *gentleman.Client httpClient *gentleman.Client
} }
// New returns a keycloak client. // New returns a keycloak client.
func New(config Config) (*Client, error) { func New(config Config) (*Client, error) {
var u *url.URL var uToken *url.URL
{ {
var err error var err error
u, err = url.Parse(config.Addr) uToken, err = url.Parse(config.AddrTokenProvider)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "could not parse URL") return nil, errors.Wrap(err, "could not parse Token Provider URL")
}
}
var uAPI *url.URL
{
var err error
uAPI, err = url.Parse(config.AddrAPI)
if err != nil {
return nil, errors.Wrap(err, "could not parse API URL")
} }
} }
var httpClient = gentleman.New() var httpClient = gentleman.New()
{ {
httpClient = httpClient.URL(u.String()) httpClient = httpClient.URL(uAPI.String())
httpClient = httpClient.Use(timeout.Request(config.Timeout)) httpClient = httpClient.Use(timeout.Request(config.Timeout))
} }
return &Client{ return &Client{
url: u, tokenProviderUrl: uToken,
apiUrl: uAPI,
httpClient: httpClient, httpClient: httpClient,
}, nil }, nil
} }
@ -101,7 +113,7 @@ func (c *Client) VerifyToken(realmName string, accessToken string) error {
var oidcProvider *oidc.Provider var oidcProvider *oidc.Provider
{ {
var err error var err error
var issuer = fmt.Sprintf("%s/auth/realms/%s", c.url.String(), realmName) var issuer = fmt.Sprintf("%s/auth/realms/%s", c.tokenProviderUrl.String(), realmName)
oidcProvider, err = oidc.NewProvider(context.Background(), issuer) oidcProvider, err = oidc.NewProvider(context.Background(), issuer)
if err != nil { if err != nil {
return errors.Wrap(err, "could not create oidc provider") return errors.Wrap(err, "could not create oidc provider")

Loading…
Cancel
Save