Only run group refresh when the skipGroupRefresh boolean isn't set
for AD and LDAP
This commit is contained in:
parent
67085e9dbb
commit
fdac4d16f0
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -131,6 +131,11 @@ type ActiveDirectoryIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an ActiveDirectory identity provider.
|
// Spec for configuring an ActiveDirectory identity provider.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -119,6 +119,11 @@ type LDAPIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an LDAP identity provider.
|
// Spec for configuring an LDAP identity provider.
|
||||||
|
@ -119,6 +119,14 @@ spec:
|
|||||||
search can be slow for some Active Directory servers. To disable
|
search can be slow for some Active Directory servers. To disable
|
||||||
it, you can set the filter to "(&(objectClass=group)(member={})"
|
it, you can set the filter to "(&(objectClass=group)(member={})"
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the AD server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this Active Directory identity
|
description: 'Host is the hostname of this Active Directory identity
|
||||||
|
@ -111,6 +111,14 @@ spec:
|
|||||||
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
||||||
the default will act as if the Filter were specified as "member={}".
|
the default will act as if the Filter were specified as "member={}".
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the LDAP server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this LDAP identity provider,
|
description: 'Host is the hostname of this LDAP identity provider,
|
||||||
|
2
generated/1.17/README.adoc
generated
2
generated/1.17/README.adoc
generated
@ -801,6 +801,7 @@ ActiveDirectoryIdentityProvider describes the configuration of an upstream Micro
|
|||||||
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". Optional, when not specified it will be based on the result of a query for the defaultNamingContext (see https://docs.microsoft.com/en-us/windows/win32/adschema/rootdse). The default behavior searches your entire domain for groups. It may make sense to specify a subtree as a search base if you wish to exclude some groups for security reasons or to make searches faster.
|
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". Optional, when not specified it will be based on the result of a query for the defaultNamingContext (see https://docs.microsoft.com/en-us/windows/win32/adschema/rootdse). The default behavior searches your entire domain for groups. It may make sense to specify a subtree as a search base if you wish to exclude some groups for security reasons or to make searches faster.
|
||||||
| *`filter`* __string__ | Filter is the ActiveDirectory search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about ActiveDirectory filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the filter were specified as "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={})". This searches nested groups by default. Note that nested group search can be slow for some Active Directory servers. To disable it, you can set the filter to "(&(objectClass=group)(member={})"
|
| *`filter`* __string__ | Filter is the ActiveDirectory search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about ActiveDirectory filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the filter were specified as "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={})". This searches nested groups by default. Note that nested group search can be slow for some Active Directory servers. To disable it, you can set the filter to "(&(objectClass=group)(member={})"
|
||||||
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-17-apis-supervisor-idp-v1alpha1-activedirectoryidentityprovidergroupsearchattributes[$$ActiveDirectoryIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each ActiveDirectory entry which was found as the result of the group search.
|
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-17-apis-supervisor-idp-v1alpha1-activedirectoryidentityprovidergroupsearchattributes[$$ActiveDirectoryIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each ActiveDirectory entry which was found as the result of the group search.
|
||||||
|
| *`skipGroupRefresh`* __boolean__ | SkipGroupRefresh skips the group refresh operation that occurs with each refresh (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD server.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
@ -988,6 +989,7 @@ LDAPIdentityProvider describes the configuration of an upstream Lightweight Dire
|
|||||||
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". When not specified, no group search will be performed and authenticated users will not belong to any groups from the LDAP provider. Also, when not specified, the values of Filter and Attributes are ignored.
|
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". When not specified, no group search will be performed and authenticated users will not belong to any groups from the LDAP provider. Also, when not specified, the values of Filter and Attributes are ignored.
|
||||||
| *`filter`* __string__ | Filter is the LDAP search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about LDAP filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the Filter were specified as "member={}".
|
| *`filter`* __string__ | Filter is the LDAP search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about LDAP filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the Filter were specified as "member={}".
|
||||||
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-17-apis-supervisor-idp-v1alpha1-ldapidentityprovidergroupsearchattributes[$$LDAPIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each LDAP entry which was found as the result of the group search.
|
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-17-apis-supervisor-idp-v1alpha1-ldapidentityprovidergroupsearchattributes[$$LDAPIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each LDAP entry which was found as the result of the group search.
|
||||||
|
| *`skipGroupRefresh`* __boolean__ | SkipGroupRefresh skips the group refresh operation that occurs with each refresh (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP server.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -131,6 +131,11 @@ type ActiveDirectoryIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an ActiveDirectory identity provider.
|
// Spec for configuring an ActiveDirectory identity provider.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -119,6 +119,11 @@ type LDAPIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an LDAP identity provider.
|
// Spec for configuring an LDAP identity provider.
|
||||||
|
@ -119,6 +119,14 @@ spec:
|
|||||||
search can be slow for some Active Directory servers. To disable
|
search can be slow for some Active Directory servers. To disable
|
||||||
it, you can set the filter to "(&(objectClass=group)(member={})"
|
it, you can set the filter to "(&(objectClass=group)(member={})"
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the AD server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this Active Directory identity
|
description: 'Host is the hostname of this Active Directory identity
|
||||||
|
@ -111,6 +111,14 @@ spec:
|
|||||||
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
||||||
the default will act as if the Filter were specified as "member={}".
|
the default will act as if the Filter were specified as "member={}".
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the LDAP server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this LDAP identity provider,
|
description: 'Host is the hostname of this LDAP identity provider,
|
||||||
|
2
generated/1.18/README.adoc
generated
2
generated/1.18/README.adoc
generated
@ -801,6 +801,7 @@ ActiveDirectoryIdentityProvider describes the configuration of an upstream Micro
|
|||||||
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". Optional, when not specified it will be based on the result of a query for the defaultNamingContext (see https://docs.microsoft.com/en-us/windows/win32/adschema/rootdse). The default behavior searches your entire domain for groups. It may make sense to specify a subtree as a search base if you wish to exclude some groups for security reasons or to make searches faster.
|
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". Optional, when not specified it will be based on the result of a query for the defaultNamingContext (see https://docs.microsoft.com/en-us/windows/win32/adschema/rootdse). The default behavior searches your entire domain for groups. It may make sense to specify a subtree as a search base if you wish to exclude some groups for security reasons or to make searches faster.
|
||||||
| *`filter`* __string__ | Filter is the ActiveDirectory search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about ActiveDirectory filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the filter were specified as "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={})". This searches nested groups by default. Note that nested group search can be slow for some Active Directory servers. To disable it, you can set the filter to "(&(objectClass=group)(member={})"
|
| *`filter`* __string__ | Filter is the ActiveDirectory search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about ActiveDirectory filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the filter were specified as "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={})". This searches nested groups by default. Note that nested group search can be slow for some Active Directory servers. To disable it, you can set the filter to "(&(objectClass=group)(member={})"
|
||||||
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-18-apis-supervisor-idp-v1alpha1-activedirectoryidentityprovidergroupsearchattributes[$$ActiveDirectoryIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each ActiveDirectory entry which was found as the result of the group search.
|
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-18-apis-supervisor-idp-v1alpha1-activedirectoryidentityprovidergroupsearchattributes[$$ActiveDirectoryIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each ActiveDirectory entry which was found as the result of the group search.
|
||||||
|
| *`skipGroupRefresh`* __boolean__ | SkipGroupRefresh skips the group refresh operation that occurs with each refresh (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD server.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
@ -988,6 +989,7 @@ LDAPIdentityProvider describes the configuration of an upstream Lightweight Dire
|
|||||||
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". When not specified, no group search will be performed and authenticated users will not belong to any groups from the LDAP provider. Also, when not specified, the values of Filter and Attributes are ignored.
|
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". When not specified, no group search will be performed and authenticated users will not belong to any groups from the LDAP provider. Also, when not specified, the values of Filter and Attributes are ignored.
|
||||||
| *`filter`* __string__ | Filter is the LDAP search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about LDAP filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the Filter were specified as "member={}".
|
| *`filter`* __string__ | Filter is the LDAP search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about LDAP filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the Filter were specified as "member={}".
|
||||||
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-18-apis-supervisor-idp-v1alpha1-ldapidentityprovidergroupsearchattributes[$$LDAPIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each LDAP entry which was found as the result of the group search.
|
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-18-apis-supervisor-idp-v1alpha1-ldapidentityprovidergroupsearchattributes[$$LDAPIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each LDAP entry which was found as the result of the group search.
|
||||||
|
| *`skipGroupRefresh`* __boolean__ | SkipGroupRefresh skips the group refresh operation that occurs with each refresh (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP server.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -131,6 +131,11 @@ type ActiveDirectoryIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an ActiveDirectory identity provider.
|
// Spec for configuring an ActiveDirectory identity provider.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -119,6 +119,11 @@ type LDAPIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an LDAP identity provider.
|
// Spec for configuring an LDAP identity provider.
|
||||||
|
@ -119,6 +119,14 @@ spec:
|
|||||||
search can be slow for some Active Directory servers. To disable
|
search can be slow for some Active Directory servers. To disable
|
||||||
it, you can set the filter to "(&(objectClass=group)(member={})"
|
it, you can set the filter to "(&(objectClass=group)(member={})"
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the AD server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this Active Directory identity
|
description: 'Host is the hostname of this Active Directory identity
|
||||||
|
@ -111,6 +111,14 @@ spec:
|
|||||||
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
||||||
the default will act as if the Filter were specified as "member={}".
|
the default will act as if the Filter were specified as "member={}".
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the LDAP server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this LDAP identity provider,
|
description: 'Host is the hostname of this LDAP identity provider,
|
||||||
|
2
generated/1.19/README.adoc
generated
2
generated/1.19/README.adoc
generated
@ -801,6 +801,7 @@ ActiveDirectoryIdentityProvider describes the configuration of an upstream Micro
|
|||||||
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". Optional, when not specified it will be based on the result of a query for the defaultNamingContext (see https://docs.microsoft.com/en-us/windows/win32/adschema/rootdse). The default behavior searches your entire domain for groups. It may make sense to specify a subtree as a search base if you wish to exclude some groups for security reasons or to make searches faster.
|
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". Optional, when not specified it will be based on the result of a query for the defaultNamingContext (see https://docs.microsoft.com/en-us/windows/win32/adschema/rootdse). The default behavior searches your entire domain for groups. It may make sense to specify a subtree as a search base if you wish to exclude some groups for security reasons or to make searches faster.
|
||||||
| *`filter`* __string__ | Filter is the ActiveDirectory search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about ActiveDirectory filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the filter were specified as "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={})". This searches nested groups by default. Note that nested group search can be slow for some Active Directory servers. To disable it, you can set the filter to "(&(objectClass=group)(member={})"
|
| *`filter`* __string__ | Filter is the ActiveDirectory search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about ActiveDirectory filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the filter were specified as "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={})". This searches nested groups by default. Note that nested group search can be slow for some Active Directory servers. To disable it, you can set the filter to "(&(objectClass=group)(member={})"
|
||||||
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-19-apis-supervisor-idp-v1alpha1-activedirectoryidentityprovidergroupsearchattributes[$$ActiveDirectoryIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each ActiveDirectory entry which was found as the result of the group search.
|
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-19-apis-supervisor-idp-v1alpha1-activedirectoryidentityprovidergroupsearchattributes[$$ActiveDirectoryIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each ActiveDirectory entry which was found as the result of the group search.
|
||||||
|
| *`skipGroupRefresh`* __boolean__ | SkipGroupRefresh skips the group refresh operation that occurs with each refresh (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD server.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
@ -988,6 +989,7 @@ LDAPIdentityProvider describes the configuration of an upstream Lightweight Dire
|
|||||||
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". When not specified, no group search will be performed and authenticated users will not belong to any groups from the LDAP provider. Also, when not specified, the values of Filter and Attributes are ignored.
|
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". When not specified, no group search will be performed and authenticated users will not belong to any groups from the LDAP provider. Also, when not specified, the values of Filter and Attributes are ignored.
|
||||||
| *`filter`* __string__ | Filter is the LDAP search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about LDAP filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the Filter were specified as "member={}".
|
| *`filter`* __string__ | Filter is the LDAP search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about LDAP filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the Filter were specified as "member={}".
|
||||||
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-19-apis-supervisor-idp-v1alpha1-ldapidentityprovidergroupsearchattributes[$$LDAPIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each LDAP entry which was found as the result of the group search.
|
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-19-apis-supervisor-idp-v1alpha1-ldapidentityprovidergroupsearchattributes[$$LDAPIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each LDAP entry which was found as the result of the group search.
|
||||||
|
| *`skipGroupRefresh`* __boolean__ | SkipGroupRefresh skips the group refresh operation that occurs with each refresh (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP server.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -131,6 +131,11 @@ type ActiveDirectoryIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an ActiveDirectory identity provider.
|
// Spec for configuring an ActiveDirectory identity provider.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -119,6 +119,11 @@ type LDAPIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an LDAP identity provider.
|
// Spec for configuring an LDAP identity provider.
|
||||||
|
@ -119,6 +119,14 @@ spec:
|
|||||||
search can be slow for some Active Directory servers. To disable
|
search can be slow for some Active Directory servers. To disable
|
||||||
it, you can set the filter to "(&(objectClass=group)(member={})"
|
it, you can set the filter to "(&(objectClass=group)(member={})"
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the AD server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this Active Directory identity
|
description: 'Host is the hostname of this Active Directory identity
|
||||||
|
@ -111,6 +111,14 @@ spec:
|
|||||||
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
||||||
the default will act as if the Filter were specified as "member={}".
|
the default will act as if the Filter were specified as "member={}".
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the LDAP server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this LDAP identity provider,
|
description: 'Host is the hostname of this LDAP identity provider,
|
||||||
|
2
generated/1.20/README.adoc
generated
2
generated/1.20/README.adoc
generated
@ -801,6 +801,7 @@ ActiveDirectoryIdentityProvider describes the configuration of an upstream Micro
|
|||||||
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". Optional, when not specified it will be based on the result of a query for the defaultNamingContext (see https://docs.microsoft.com/en-us/windows/win32/adschema/rootdse). The default behavior searches your entire domain for groups. It may make sense to specify a subtree as a search base if you wish to exclude some groups for security reasons or to make searches faster.
|
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". Optional, when not specified it will be based on the result of a query for the defaultNamingContext (see https://docs.microsoft.com/en-us/windows/win32/adschema/rootdse). The default behavior searches your entire domain for groups. It may make sense to specify a subtree as a search base if you wish to exclude some groups for security reasons or to make searches faster.
|
||||||
| *`filter`* __string__ | Filter is the ActiveDirectory search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about ActiveDirectory filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the filter were specified as "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={})". This searches nested groups by default. Note that nested group search can be slow for some Active Directory servers. To disable it, you can set the filter to "(&(objectClass=group)(member={})"
|
| *`filter`* __string__ | Filter is the ActiveDirectory search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about ActiveDirectory filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the filter were specified as "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={})". This searches nested groups by default. Note that nested group search can be slow for some Active Directory servers. To disable it, you can set the filter to "(&(objectClass=group)(member={})"
|
||||||
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-20-apis-supervisor-idp-v1alpha1-activedirectoryidentityprovidergroupsearchattributes[$$ActiveDirectoryIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each ActiveDirectory entry which was found as the result of the group search.
|
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-20-apis-supervisor-idp-v1alpha1-activedirectoryidentityprovidergroupsearchattributes[$$ActiveDirectoryIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each ActiveDirectory entry which was found as the result of the group search.
|
||||||
|
| *`skipGroupRefresh`* __boolean__ | SkipGroupRefresh skips the group refresh operation that occurs with each refresh (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD server.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
@ -988,6 +989,7 @@ LDAPIdentityProvider describes the configuration of an upstream Lightweight Dire
|
|||||||
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". When not specified, no group search will be performed and authenticated users will not belong to any groups from the LDAP provider. Also, when not specified, the values of Filter and Attributes are ignored.
|
| *`base`* __string__ | Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g. "ou=groups,dc=example,dc=com". When not specified, no group search will be performed and authenticated users will not belong to any groups from the LDAP provider. Also, when not specified, the values of Filter and Attributes are ignored.
|
||||||
| *`filter`* __string__ | Filter is the LDAP search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about LDAP filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the Filter were specified as "member={}".
|
| *`filter`* __string__ | Filter is the LDAP search filter which should be applied when searching for groups for a user. The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or "&(objectClass=groupOfNames)(member={})". For more information about LDAP filters, see https://ldap.com/ldap-filters. Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used. Optional. When not specified, the default will act as if the Filter were specified as "member={}".
|
||||||
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-20-apis-supervisor-idp-v1alpha1-ldapidentityprovidergroupsearchattributes[$$LDAPIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each LDAP entry which was found as the result of the group search.
|
| *`attributes`* __xref:{anchor_prefix}-go-pinniped-dev-generated-1-20-apis-supervisor-idp-v1alpha1-ldapidentityprovidergroupsearchattributes[$$LDAPIdentityProviderGroupSearchAttributes$$]__ | Attributes specifies how the group's information should be read from each LDAP entry which was found as the result of the group search.
|
||||||
|
| *`skipGroupRefresh`* __boolean__ | SkipGroupRefresh skips the group refresh operation that occurs with each refresh (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP server.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -131,6 +131,11 @@ type ActiveDirectoryIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an ActiveDirectory identity provider.
|
// Spec for configuring an ActiveDirectory identity provider.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -119,6 +119,11 @@ type LDAPIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an LDAP identity provider.
|
// Spec for configuring an LDAP identity provider.
|
||||||
|
@ -119,6 +119,14 @@ spec:
|
|||||||
search can be slow for some Active Directory servers. To disable
|
search can be slow for some Active Directory servers. To disable
|
||||||
it, you can set the filter to "(&(objectClass=group)(member={})"
|
it, you can set the filter to "(&(objectClass=group)(member={})"
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the AD server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this Active Directory identity
|
description: 'Host is the hostname of this Active Directory identity
|
||||||
|
@ -111,6 +111,14 @@ spec:
|
|||||||
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
an entry, so "dn={}" cannot be used. Optional. When not specified,
|
||||||
the default will act as if the Filter were specified as "member={}".
|
the default will act as if the Filter were specified as "member={}".
|
||||||
type: string
|
type: string
|
||||||
|
skipGroupRefresh:
|
||||||
|
description: SkipGroupRefresh skips the group refresh operation
|
||||||
|
that occurs with each refresh (every 5 minutes). This can be
|
||||||
|
done if group search is very slow or resource intensive for
|
||||||
|
the LDAP server.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- skipGroupRefresh
|
||||||
type: object
|
type: object
|
||||||
host:
|
host:
|
||||||
description: 'Host is the hostname of this LDAP identity provider,
|
description: 'Host is the hostname of this LDAP identity provider,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -131,6 +131,11 @@ type ActiveDirectoryIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes ActiveDirectoryIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the AD
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an ActiveDirectory identity provider.
|
// Spec for configuring an ActiveDirectory identity provider.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
|
// Copyright 2021-2022 the Pinniped contributors. All Rights Reserved.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
@ -119,6 +119,11 @@ type LDAPIdentityProviderGroupSearch struct {
|
|||||||
// the result of the group search.
|
// the result of the group search.
|
||||||
// +optional
|
// +optional
|
||||||
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool `json:"skipGroupRefresh"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spec for configuring an LDAP identity provider.
|
// Spec for configuring an LDAP identity provider.
|
||||||
|
@ -333,6 +333,7 @@ func (c *activeDirectoryWatcherController) validateUpstream(ctx context.Context,
|
|||||||
Base: spec.GroupSearch.Base,
|
Base: spec.GroupSearch.Base,
|
||||||
Filter: adUpstreamImpl.Spec().GroupSearch().Filter(),
|
Filter: adUpstreamImpl.Spec().GroupSearch().Filter(),
|
||||||
GroupNameAttribute: adUpstreamImpl.Spec().GroupSearch().GroupNameAttribute(),
|
GroupNameAttribute: adUpstreamImpl.Spec().GroupSearch().GroupNameAttribute(),
|
||||||
|
SkipGroupRefresh: spec.GroupSearch.SkipGroupRefresh,
|
||||||
},
|
},
|
||||||
Dialer: c.ldapDialer,
|
Dialer: c.ldapDialer,
|
||||||
UIDAttributeParsingOverrides: map[string]func(*ldap.Entry) (string, error){
|
UIDAttributeParsingOverrides: map[string]func(*ldap.Entry) (string, error){
|
||||||
|
@ -192,6 +192,7 @@ func TestActiveDirectoryUpstreamWatcherControllerSync(t *testing.T) {
|
|||||||
Attributes: v1alpha1.ActiveDirectoryIdentityProviderGroupSearchAttributes{
|
Attributes: v1alpha1.ActiveDirectoryIdentityProviderGroupSearchAttributes{
|
||||||
GroupName: testGroupNameAttrName,
|
GroupName: testGroupNameAttrName,
|
||||||
},
|
},
|
||||||
|
SkipGroupRefresh: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -1907,6 +1908,75 @@ func TestActiveDirectoryUpstreamWatcherControllerSync(t *testing.T) {
|
|||||||
SearchBaseFoundCondition: condPtr(withoutTime(searchBaseFoundInRootDSECondition(0))),
|
SearchBaseFoundCondition: condPtr(withoutTime(searchBaseFoundInRootDSECondition(0))),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "skipping group refresh is valid",
|
||||||
|
inputUpstreams: []runtime.Object{editedValidUpstream(func(upstream *v1alpha1.ActiveDirectoryIdentityProvider) {
|
||||||
|
upstream.Spec.GroupSearch.SkipGroupRefresh = true
|
||||||
|
})},
|
||||||
|
inputSecrets: []runtime.Object{validBindUserSecret("4242")},
|
||||||
|
setupMocks: func(conn *mockldapconn.MockConn) {
|
||||||
|
// Should perform a test dial and bind.
|
||||||
|
conn.EXPECT().Bind(testBindUsername, testBindPassword).Times(1)
|
||||||
|
conn.EXPECT().Close().Times(1)
|
||||||
|
},
|
||||||
|
wantResultingCache: []*upstreamldap.ProviderConfig{
|
||||||
|
{
|
||||||
|
Name: testName,
|
||||||
|
ResourceUID: testResourceUID,
|
||||||
|
Host: testHost,
|
||||||
|
ConnectionProtocol: upstreamldap.TLS,
|
||||||
|
CABundle: testCABundle,
|
||||||
|
BindUsername: testBindUsername,
|
||||||
|
BindPassword: testBindPassword,
|
||||||
|
UserSearch: upstreamldap.UserSearchConfig{
|
||||||
|
Base: testUserSearchBase,
|
||||||
|
Filter: testUserSearchFilter,
|
||||||
|
UsernameAttribute: testUsernameAttrName,
|
||||||
|
UIDAttribute: testUIDAttrName,
|
||||||
|
},
|
||||||
|
GroupSearch: upstreamldap.GroupSearchConfig{
|
||||||
|
Base: testGroupSearchBase,
|
||||||
|
Filter: testGroupSearchFilter,
|
||||||
|
GroupNameAttribute: testGroupNameAttrName,
|
||||||
|
SkipGroupRefresh: true,
|
||||||
|
},
|
||||||
|
UIDAttributeParsingOverrides: map[string]func(*ldap.Entry) (string, error){"objectGUID": microsoftUUIDFromBinaryAttr("objectGUID")},
|
||||||
|
RefreshAttributeChecks: map[string]func(*ldap.Entry, provider.StoredRefreshAttributes) error{
|
||||||
|
"pwdLastSet": upstreamldap.AttributeUnchangedSinceLogin("pwdLastSet"),
|
||||||
|
"userAccountControl": validUserAccountControl,
|
||||||
|
"msDS-User-Account-Control-Computed": validComputedUserAccountControl,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
wantResultingUpstreams: []v1alpha1.ActiveDirectoryIdentityProvider{{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Namespace: testNamespace, Name: testName, Generation: 1234, UID: testResourceUID},
|
||||||
|
Status: v1alpha1.ActiveDirectoryIdentityProviderStatus{
|
||||||
|
Phase: "Ready",
|
||||||
|
Conditions: []v1alpha1.Condition{
|
||||||
|
bindSecretValidTrueCondition(1234),
|
||||||
|
activeDirectoryConnectionValidTrueCondition(1234, "4242"),
|
||||||
|
searchBaseFoundInConfigCondition(1234),
|
||||||
|
{
|
||||||
|
Type: "TLSConfigurationValid",
|
||||||
|
Status: "True",
|
||||||
|
LastTransitionTime: now,
|
||||||
|
Reason: "Success",
|
||||||
|
Message: "loaded TLS configuration",
|
||||||
|
ObservedGeneration: 1234,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}},
|
||||||
|
wantValidatedSettings: map[string]upstreamwatchers.ValidatedSettings{testName: {
|
||||||
|
BindSecretResourceVersion: "4242",
|
||||||
|
LDAPConnectionProtocol: upstreamldap.TLS,
|
||||||
|
UserSearchBase: testUserSearchBase,
|
||||||
|
GroupSearchBase: testGroupSearchBase,
|
||||||
|
IDPSpecGeneration: 1234,
|
||||||
|
ConnectionValidCondition: condPtr(activeDirectoryConnectionValidTrueConditionWithoutTimeOrGeneration("4242")),
|
||||||
|
SearchBaseFoundCondition: condPtr(withoutTime(searchBaseFoundInConfigCondition(0))),
|
||||||
|
}},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
@ -239,6 +239,7 @@ func (c *ldapWatcherController) validateUpstream(ctx context.Context, upstream *
|
|||||||
Base: spec.GroupSearch.Base,
|
Base: spec.GroupSearch.Base,
|
||||||
Filter: spec.GroupSearch.Filter,
|
Filter: spec.GroupSearch.Filter,
|
||||||
GroupNameAttribute: spec.GroupSearch.Attributes.GroupName,
|
GroupNameAttribute: spec.GroupSearch.Attributes.GroupName,
|
||||||
|
SkipGroupRefresh: spec.GroupSearch.SkipGroupRefresh,
|
||||||
},
|
},
|
||||||
Dialer: c.ldapDialer,
|
Dialer: c.ldapDialer,
|
||||||
}
|
}
|
||||||
|
@ -196,6 +196,7 @@ func TestLDAPUpstreamWatcherControllerSync(t *testing.T) {
|
|||||||
Attributes: v1alpha1.LDAPIdentityProviderGroupSearchAttributes{
|
Attributes: v1alpha1.LDAPIdentityProviderGroupSearchAttributes{
|
||||||
GroupName: testGroupNameAttrName,
|
GroupName: testGroupNameAttrName,
|
||||||
},
|
},
|
||||||
|
SkipGroupRefresh: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -1053,6 +1054,67 @@ func TestLDAPUpstreamWatcherControllerSync(t *testing.T) {
|
|||||||
IDPSpecGeneration: 1234,
|
IDPSpecGeneration: 1234,
|
||||||
ConnectionValidCondition: condPtr(ldapConnectionValidTrueConditionWithoutTimeOrGeneration("4242")),
|
ConnectionValidCondition: condPtr(ldapConnectionValidTrueConditionWithoutTimeOrGeneration("4242")),
|
||||||
}}},
|
}}},
|
||||||
|
{
|
||||||
|
name: "skipping group refresh is valid",
|
||||||
|
inputUpstreams: []runtime.Object{editedValidUpstream(func(upstream *v1alpha1.LDAPIdentityProvider) {
|
||||||
|
upstream.Spec.GroupSearch.SkipGroupRefresh = true
|
||||||
|
})},
|
||||||
|
inputSecrets: []runtime.Object{validBindUserSecret("4242")},
|
||||||
|
setupMocks: func(conn *mockldapconn.MockConn) {
|
||||||
|
// Should perform a test dial and bind.
|
||||||
|
conn.EXPECT().Bind(testBindUsername, testBindPassword).Times(1)
|
||||||
|
conn.EXPECT().Close().Times(1)
|
||||||
|
},
|
||||||
|
wantResultingCache: []*upstreamldap.ProviderConfig{
|
||||||
|
{
|
||||||
|
Name: testName,
|
||||||
|
ResourceUID: testResourceUID,
|
||||||
|
Host: testHost,
|
||||||
|
ConnectionProtocol: upstreamldap.TLS,
|
||||||
|
CABundle: testCABundle,
|
||||||
|
BindUsername: testBindUsername,
|
||||||
|
BindPassword: testBindPassword,
|
||||||
|
UserSearch: upstreamldap.UserSearchConfig{
|
||||||
|
Base: testUserSearchBase,
|
||||||
|
Filter: testUserSearchFilter,
|
||||||
|
UsernameAttribute: testUsernameAttrName,
|
||||||
|
UIDAttribute: testUIDAttrName,
|
||||||
|
},
|
||||||
|
GroupSearch: upstreamldap.GroupSearchConfig{
|
||||||
|
Base: testGroupSearchBase,
|
||||||
|
Filter: testGroupSearchFilter,
|
||||||
|
GroupNameAttribute: testGroupNameAttrName,
|
||||||
|
SkipGroupRefresh: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
wantResultingUpstreams: []v1alpha1.LDAPIdentityProvider{{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Namespace: testNamespace, Name: testName, Generation: 1234, UID: testResourceUID},
|
||||||
|
Status: v1alpha1.LDAPIdentityProviderStatus{
|
||||||
|
Phase: "Ready",
|
||||||
|
Conditions: []v1alpha1.Condition{
|
||||||
|
bindSecretValidTrueCondition(1234),
|
||||||
|
ldapConnectionValidTrueCondition(1234, "4242"),
|
||||||
|
{
|
||||||
|
Type: "TLSConfigurationValid",
|
||||||
|
Status: "True",
|
||||||
|
LastTransitionTime: now,
|
||||||
|
Reason: "Success",
|
||||||
|
Message: "loaded TLS configuration",
|
||||||
|
ObservedGeneration: 1234,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}},
|
||||||
|
wantValidatedSettings: map[string]upstreamwatchers.ValidatedSettings{testName: {
|
||||||
|
BindSecretResourceVersion: "4242",
|
||||||
|
LDAPConnectionProtocol: upstreamldap.TLS,
|
||||||
|
UserSearchBase: testUserSearchBase,
|
||||||
|
GroupSearchBase: testGroupSearchBase,
|
||||||
|
IDPSpecGeneration: 1234,
|
||||||
|
ConnectionValidCondition: condPtr(ldapConnectionValidTrueConditionWithoutTimeOrGeneration("4242")),
|
||||||
|
}},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
@ -115,6 +115,7 @@ type StoredRefreshAttributes struct {
|
|||||||
Username string
|
Username string
|
||||||
Subject string
|
Subject string
|
||||||
DN string
|
DN string
|
||||||
|
Groups []string
|
||||||
AdditionalAttributes map[string]string
|
AdditionalAttributes map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,6 +275,10 @@ func upstreamLDAPRefresh(ctx context.Context, providerCache oidc.UpstreamIdentit
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
subject := session.Fosite.Claims.Subject
|
subject := session.Fosite.Claims.Subject
|
||||||
|
oldGroups, err := getDownstreamGroupsFromPinnipedSession(session)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
s := session.Custom
|
s := session.Custom
|
||||||
|
|
||||||
@ -305,6 +309,7 @@ func upstreamLDAPRefresh(ctx context.Context, providerCache oidc.UpstreamIdentit
|
|||||||
Username: username,
|
Username: username,
|
||||||
Subject: subject,
|
Subject: subject,
|
||||||
DN: dn,
|
DN: dn,
|
||||||
|
Groups: oldGroups,
|
||||||
AdditionalAttributes: additionalAttributes,
|
AdditionalAttributes: additionalAttributes,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -353,7 +358,7 @@ func getDownstreamUsernameFromPinnipedSession(session *psession.PinnipedSession)
|
|||||||
if extra == nil {
|
if extra == nil {
|
||||||
return "", errorsx.WithStack(errMissingUpstreamSessionInternalError)
|
return "", errorsx.WithStack(errMissingUpstreamSessionInternalError)
|
||||||
}
|
}
|
||||||
downstreamUsernameInterface := extra["username"]
|
downstreamUsernameInterface := extra[oidc.DownstreamUsernameClaim]
|
||||||
if downstreamUsernameInterface == nil {
|
if downstreamUsernameInterface == nil {
|
||||||
return "", errorsx.WithStack(errMissingUpstreamSessionInternalError)
|
return "", errorsx.WithStack(errMissingUpstreamSessionInternalError)
|
||||||
}
|
}
|
||||||
@ -363,3 +368,28 @@ func getDownstreamUsernameFromPinnipedSession(session *psession.PinnipedSession)
|
|||||||
}
|
}
|
||||||
return downstreamUsername, nil
|
return downstreamUsername, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getDownstreamGroupsFromPinnipedSession(session *psession.PinnipedSession) ([]string, error) {
|
||||||
|
extra := session.Fosite.Claims.Extra
|
||||||
|
if extra == nil {
|
||||||
|
return nil, errorsx.WithStack(errMissingUpstreamSessionInternalError)
|
||||||
|
}
|
||||||
|
downstreamGroupsInterface := extra[oidc.DownstreamGroupsClaim]
|
||||||
|
if downstreamGroupsInterface == nil {
|
||||||
|
return nil, errorsx.WithStack(errMissingUpstreamSessionInternalError)
|
||||||
|
}
|
||||||
|
downstreamGroupsInterfaceList, ok := downstreamGroupsInterface.([]interface{})
|
||||||
|
if !ok {
|
||||||
|
return nil, errorsx.WithStack(errMissingUpstreamSessionInternalError)
|
||||||
|
}
|
||||||
|
|
||||||
|
downstreamGroups := make([]string, 0, len(downstreamGroupsInterfaceList))
|
||||||
|
for _, downstreamGroupInterface := range downstreamGroupsInterfaceList {
|
||||||
|
downstreamGroup, ok := downstreamGroupInterface.(string)
|
||||||
|
if !ok || len(downstreamGroup) == 0 {
|
||||||
|
return nil, errorsx.WithStack(errMissingUpstreamSessionInternalError)
|
||||||
|
}
|
||||||
|
downstreamGroups = append(downstreamGroups, downstreamGroup)
|
||||||
|
}
|
||||||
|
return downstreamGroups, nil
|
||||||
|
}
|
||||||
|
@ -150,6 +150,11 @@ type GroupSearchConfig struct {
|
|||||||
// GroupNameAttribute is the attribute in the LDAP group entry from which the group name should be
|
// GroupNameAttribute is the attribute in the LDAP group entry from which the group name should be
|
||||||
// retrieved. Empty means to use 'cn'.
|
// retrieved. Empty means to use 'cn'.
|
||||||
GroupNameAttribute string
|
GroupNameAttribute string
|
||||||
|
|
||||||
|
// SkipGroupRefresh skips the group refresh operation that occurs with each refresh
|
||||||
|
// (every 5 minutes). This can be done if group search is very slow or resource intensive for the LDAP
|
||||||
|
// server.
|
||||||
|
SkipGroupRefresh bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type Provider struct {
|
type Provider struct {
|
||||||
@ -230,6 +235,10 @@ func (p *Provider) PerformRefresh(ctx context.Context, storedRefreshAttributes p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if p.c.GroupSearch.SkipGroupRefresh {
|
||||||
|
return storedRefreshAttributes.Groups, nil
|
||||||
|
}
|
||||||
|
|
||||||
mappedGroupNames, err := p.searchGroupsForUserDN(conn, userDN)
|
mappedGroupNames, err := p.searchGroupsForUserDN(conn, userDN)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -1298,6 +1298,37 @@ func TestUpstreamRefresh(t *testing.T) {
|
|||||||
},
|
},
|
||||||
wantGroups: []string{},
|
wantGroups: []string{},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "happy path where group search is configured but skipGroupRefresh is set",
|
||||||
|
providerConfig: &ProviderConfig{
|
||||||
|
Name: "some-provider-name",
|
||||||
|
Host: testHost,
|
||||||
|
CABundle: nil, // this field is only used by the production dialer, which is replaced by a mock for this test
|
||||||
|
ConnectionProtocol: TLS,
|
||||||
|
BindUsername: testBindUsername,
|
||||||
|
BindPassword: testBindPassword,
|
||||||
|
UserSearch: UserSearchConfig{
|
||||||
|
Base: testUserSearchBase,
|
||||||
|
UIDAttribute: testUserSearchUIDAttribute,
|
||||||
|
UsernameAttribute: testUserSearchUsernameAttribute,
|
||||||
|
},
|
||||||
|
GroupSearch: GroupSearchConfig{
|
||||||
|
Base: testGroupSearchBase,
|
||||||
|
Filter: testGroupSearchFilter,
|
||||||
|
GroupNameAttribute: testGroupSearchGroupNameAttribute,
|
||||||
|
SkipGroupRefresh: true,
|
||||||
|
},
|
||||||
|
RefreshAttributeChecks: map[string]func(*ldap.Entry, provider.StoredRefreshAttributes) error{
|
||||||
|
pwdLastSetAttribute: AttributeUnchangedSinceLogin(pwdLastSetAttribute),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setupMocks: func(conn *mockldapconn.MockConn) {
|
||||||
|
conn.EXPECT().Bind(testBindUsername, testBindPassword).Times(1)
|
||||||
|
conn.EXPECT().Search(expectedUserSearch).Return(happyPathUserSearchResult, nil).Times(1) // note that group search is not expected
|
||||||
|
conn.EXPECT().Close().Times(1)
|
||||||
|
},
|
||||||
|
wantGroups: nil, // do not update groups
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "error where dial fails",
|
name: "error where dial fails",
|
||||||
providerConfig: providerConfig,
|
providerConfig: providerConfig,
|
||||||
|
Loading…
Reference in New Issue
Block a user