mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2026-10-18 13:18:26 +02:00
Add azure groups support and oauth2 v2.0
This commit is contained in:
@@ -483,6 +483,7 @@ type LegacyProvider struct {
|
||||
|
||||
KeycloakGroups []string `flag:"keycloak-group" cfg:"keycloak_groups"`
|
||||
AzureTenant string `flag:"azure-tenant" cfg:"azure_tenant"`
|
||||
AzureGraphGroupField string `flag:"azure-graph-group-field" cfg:"azure_graph_group_field"`
|
||||
BitbucketTeam string `flag:"bitbucket-team" cfg:"bitbucket_team"`
|
||||
BitbucketRepository string `flag:"bitbucket-repository" cfg:"bitbucket_repository"`
|
||||
GitHubOrg string `flag:"github-org" cfg:"github_org"`
|
||||
@@ -538,6 +539,7 @@ func legacyProviderFlagSet() *pflag.FlagSet {
|
||||
|
||||
flagSet.StringSlice("keycloak-group", []string{}, "restrict logins to members of these groups (may be given multiple times)")
|
||||
flagSet.String("azure-tenant", "common", "go to a tenant-specific or common (tenant-independent) endpoint.")
|
||||
flagSet.String("azure-graph-group-field", "", "configures the group field to be used when building the groups list(`id` or `displayName`. Default is `id`) from Microsoft Graph(available only for v2.0 oidc url). Based on this value, the `allowed-group` config values should be adjusted accordingly. If using `id` as group field, `allowed-group` should contains groups IDs, if using `displayName` as group field, `allowed-group` should contains groups name")
|
||||
flagSet.String("bitbucket-team", "", "restrict logins to members of this team")
|
||||
flagSet.String("bitbucket-repository", "", "restrict logins to user with access to this repository")
|
||||
flagSet.String("github-org", "", "restrict logins to members of this organisation")
|
||||
@@ -676,7 +678,8 @@ func (l *LegacyProvider) convert() (Providers, error) {
|
||||
// This part is out of the switch section because azure has a default tenant
|
||||
// that needs to be added from legacy options
|
||||
provider.AzureConfig = AzureOptions{
|
||||
Tenant: l.AzureTenant,
|
||||
Tenant: l.AzureTenant,
|
||||
GraphGroupField: l.AzureGraphGroupField,
|
||||
}
|
||||
|
||||
switch provider.Type {
|
||||
|
||||
@@ -142,6 +142,9 @@ type AzureOptions struct {
|
||||
// Tenant directs to a tenant-specific or common (tenant-independent) endpoint
|
||||
// Default value is 'common'
|
||||
Tenant string `json:"tenant,omitempty"`
|
||||
// GraphGroupField configures the group field to be used when building the groups list from Microsoft Graph
|
||||
// Default value is 'id'
|
||||
GraphGroupField string `json:"graphGroupField,omitempty"`
|
||||
}
|
||||
|
||||
type ADFSOptions struct {
|
||||
|
||||
@@ -149,3 +149,16 @@ func isHostnameAllowed(hostname, allowedHost string) bool {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// RemoveDuplicateStr removes duplicates from a slice of strings.
|
||||
func RemoveDuplicateStr(strSlice []string) []string {
|
||||
allKeys := make(map[string]struct{})
|
||||
var list []string
|
||||
for _, item := range strSlice {
|
||||
if _, ok := allKeys[item]; !ok {
|
||||
allKeys[item] = struct{}{}
|
||||
list = append(list, item)
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user