Extract roles from Keycloak Access Tokens

This commit is contained in:
Nick Meves
2021-07-30 09:46:13 +02:00
committed by Peter Braun
parent 4c0beb373f
commit ab54de38cc
4 changed files with 95 additions and 2 deletions
+3
View File
@@ -508,6 +508,7 @@ type LegacyProvider struct {
ApprovalPrompt string `flag:"approval-prompt" cfg:"approval_prompt"` // Deprecated by OIDC 1.0
UserIDClaim string `flag:"user-id-claim" cfg:"user_id_claim"`
AllowedGroups []string `flag:"allowed-group" cfg:"allowed_groups"`
AllowedRoles []string `flag:"allowed-role" cfg:"allowed_roles"`
AcrValues string `flag:"acr-values" cfg:"acr_values"`
JWTKey string `flag:"jwt-key" cfg:"jwt_key"`
@@ -563,6 +564,7 @@ func legacyProviderFlagSet() *pflag.FlagSet {
flagSet.String("user-id-claim", providers.OIDCEmailClaim, "(DEPRECATED for `oidc-email-claim`) which claim contains the user ID")
flagSet.StringSlice("allowed-group", []string{}, "restrict logins to members of this group (may be given multiple times)")
flagSet.StringSlice("allowed-role", []string{}, "(keycloak-oidc) restrict logins to members of these roles (may be given multiple times)")
return flagSet
}
@@ -659,6 +661,7 @@ func (l *LegacyProvider) convert() (Providers, error) {
case "keycloak":
provider.KeycloakConfig = KeycloakOptions{
Groups: l.KeycloakGroups,
Roles: l.AllowedRoles,
}
case "gitlab":
provider.GitLabConfig = GitLabOptions{
+1
View File
@@ -78,6 +78,7 @@ type Provider struct {
type KeycloakOptions struct {
// Group enables to restrict login to members of indicated group
Groups []string `json:"groups,omitempty"`
Roles []string `json:"roles,omitempty"`
}
type AzureOptions struct {
+1
View File
@@ -251,6 +251,7 @@ func parseProviderInfo(o *options.Options, msgs []string) []string {
if p.Verifier == nil {
msgs = append(msgs, "keycloak-oidc provider requires an oidc issuer URL")
}
p.AddAllowedRoles(o.Providers[0].KeycloakConfig.Roles)
case *providers.GoogleProvider:
if o.Providers[0].GoogleConfig.ServiceAccountJSON != "" {
file, err := os.Open(o.Providers[0].GoogleConfig.ServiceAccountJSON)