Added audience override for token sent to authorization server

This commit is contained in:
David J. Allen 2024-04-29 14:50:48 -06:00
parent 20ba7bc735
commit c67c6f75a2
No known key found for this signature in database
GPG key ID: 717C593FF60A2ACC
3 changed files with 12 additions and 3 deletions

View file

@ -45,6 +45,7 @@ type TokenOptions struct {
Forwarding bool `yaml:"forwarding"`
Refresh bool `yaml:"refresh"`
Scope []string `yaml:"scope"`
//TODO: allow specifying audience in returned token
}
type Authentication struct {
@ -55,9 +56,10 @@ type Authentication struct {
}
type Authorization struct {
Token TokenOptions `yaml:"token"`
Endpoints Endpoints `yaml:"endpoints"`
KeyPath string `yaml:"key-path"`
Token TokenOptions `yaml:"token"`
Audience []string `yaml:"audience"` // NOTE: overrides the "aud" claim in token sent to authorization server
}
type Config struct {

View file

@ -23,6 +23,7 @@ type JwtBearerFlowParams struct {
// IdentityProvider *oidc.IdentityProvider
TrustedIssuer *oauth.TrustedIssuer
Client *oauth.Client
Audience []string
Refresh bool
Verbose bool
KeyPath string
@ -143,6 +144,11 @@ func NewJwtBearerFlow(eps JwtBearerFlowEndpoints, params JwtBearerFlowParams) (s
payload["exp"] = time.Now().Add(time.Second * 3600 * 16).Unix()
payload["sub"] = "opaal"
// if an "audience" value is set, then override the token endpoint value
if len(params.Audience) > 0 {
payload["aud"] = params.Audience
}
// include the offline_access scope if refresh tokens are enabled
if params.Refresh {
v, ok := payload["scope"]

View file

@ -60,8 +60,9 @@ func Login(config *Config) error {
ExpiresAt: time.Now().Add(config.Authorization.Token.Duration),
Scope: []string{},
},
Verbose: config.Options.Verbose,
Refresh: config.Authorization.Token.Refresh,
Verbose: config.Options.Verbose,
Refresh: config.Authorization.Token.Refresh,
Audience: config.Authorization.Audience,
},
ClientCredentialsEndpoints: flows.ClientCredentialsFlowEndpoints{
Clients: config.Authorization.Endpoints.Clients,