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"
)
// This should be oncverted into
// GetClient(accessToken string, realmName, idClient string) (kc.ClientRepresentation, 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)
}
}
// Check that all users where created.
{
@ -345,15 +343,14 @@ func main() {
}
}
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()
return &keycloak.Config{
Addr: *adr,
AddrTokenProvider: *tokenAddr,
AddrAPI: *apiAddr,
Timeout: 10 * time.Second,
}
}

28
keycloak_client.go

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

Loading…
Cancel
Save