Browse Source

Split API url and Token issuer URL

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

19
integration/integration.go

@ -15,8 +15,7 @@ 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)
// AddClientRolesToUserRoleMapping(accessToken string, realmName, userID, clientID string, roles []kc.RoleRepresentation) error // AddClientRolesToUserRoleMapping(accessToken string, realmName, userID, clientID string, roles []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.
{ {
@ -169,7 +167,7 @@ func main() {
log.Fatalf("could not get user") log.Fatalf("could not get user")
} }
if !(*(user.Username) != ""){ if !(*(user.Username) != "") {
log.Fatalf("Username should not be empty") log.Fatalf("Username should not be empty")
} }
@ -236,7 +234,7 @@ func main() {
log.Fatalf("there should be 7 users matched by search") log.Fatalf("there should be 7 users matched by search")
} }
} }
fmt.Println("Test users retrieved.") fmt.Println("Test users retrieved.")
} }
@ -345,16 +343,15 @@ 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,
Timeout: 10 * time.Second, AddrAPI: *apiAddr,
Timeout: 10 * time.Second,
} }
} }

34
keycloak_client.go

@ -17,36 +17,48 @@ 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
Timeout time.Duration AddrAPI string
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
httpClient *gentleman.Client apiUrl *url.URL
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,
httpClient: httpClient, apiUrl: uAPI,
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