mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-11-05 07:21:36 +08:00
112 lines
4.7 KiB
Go
112 lines
4.7 KiB
Go
// Copyright 2019 Yunion
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package identity
|
|
|
|
import "yunion.io/x/jsonutils"
|
|
|
|
const (
|
|
QueryScopeOne = "one"
|
|
QUeryScopeSub = "sub"
|
|
)
|
|
|
|
type TConfigs map[string]map[string]jsonutils.JSONObject
|
|
|
|
type SLDAPIdpConfigBaseOptions struct {
|
|
Url string `json:"url,omitempty" help:"LDAP server URL" required:"true"`
|
|
Suffix string `json:"suffix,omitempty" required:"true"`
|
|
User string `json:"user,omitempty" required:"true"`
|
|
Password string `json:"password,omitempty" required:"true"`
|
|
}
|
|
|
|
type SLDAPIdpConfigSingleDomainOptions struct {
|
|
SLDAPIdpConfigBaseOptions
|
|
|
|
UserTreeDN string `json:"user_tree_dn,omitempty" help:"Base user tree distinguished name" required:"true"`
|
|
GroupTreeDN string `json:"group_tree_dn,omitempty" help:"Base group tree distinguished name" required:"true"`
|
|
}
|
|
|
|
type SLDAPIdpConfigMultiDomainOptions struct {
|
|
SLDAPIdpConfigBaseOptions
|
|
|
|
DomainTreeDN string `json:"domain_tree_dn,omitempty" help:"Base domain tree distinguished name" required:"true"`
|
|
}
|
|
|
|
type SLDAPIdpConfigOptions struct {
|
|
Url string `json:"url,omitempty" help:"LDAP server URL" required:"true"`
|
|
Suffix string `json:"suffix,omitempty" required:"true"`
|
|
QueryScope string `json:"query_scope,omitempty" help:"Query scope" choices:"one|sub"`
|
|
|
|
User string `json:"user,omitempty"`
|
|
Password string `json:"password,omitempty"`
|
|
|
|
DomainTreeDN string `json:"domain_tree_dn,omitempty" help:"Domain tree root node dn(distinguished name)"`
|
|
DomainFilter string `json:"domain_filter,omitempty"`
|
|
DomainObjectclass string `json:"domain_objectclass,omitempty"`
|
|
DomainIdAttribute string `json:"domain_id_attribute,omitempty"`
|
|
DomainNameAttribute string `json:"domain_name_attribute,omitempty"`
|
|
DomainQueryScope string `json:"domain_query_scope,omitempty" help:"Query scope" choices:"one|sub"`
|
|
|
|
UserTreeDN string `json:"user_tree_dn,omitempty" help:"User tree distinguished name"`
|
|
UserFilter string `json:"user_filter,omitempty"`
|
|
UserObjectclass string `json:"user_objectclass,omitempty"`
|
|
UserIdAttribute string `json:"user_id_attribute,omitempty"`
|
|
UserNameAttribute string `json:"user_name_attribute,omitempty"`
|
|
UserEnabledAttribute string `json:"user_enabled_attribute,omitempty"`
|
|
UserEnabledMask int64 `json:"user_enabled_mask,allowzero" default:"-1"`
|
|
UserEnabledDefault string `json:"user_enabled_default,omitempty"`
|
|
UserEnabledInvert bool `json:"user_enabled_invert,allowfalse"`
|
|
UserAdditionalAttribute []string `json:"user_additional_attribute_mapping,omitempty" token:"user_additional_attribute"`
|
|
UserQueryScope string `json:"user_query_scope,omitempty" help:"Query scope" choices:"one|sub"`
|
|
|
|
GroupTreeDN string `json:"group_tree_dn,omitempty" help:"Group tree distinguished name"`
|
|
GroupFilter string `json:"group_filter,omitempty"`
|
|
GroupObjectclass string `json:"group_objectclass,omitempty"`
|
|
GroupIdAttribute string `json:"group_id_attribute,omitempty"`
|
|
GroupNameAttribute string `json:"group_name_attribute,omitempty"`
|
|
GroupMemberAttribute string `json:"group_member_attribute,omitempty"`
|
|
GroupMembersAreIds bool `json:"group_members_are_ids,allowfalse"`
|
|
GroupQueryScope string `json:"group_query_scope,omitempty" help:"Query scope" choices:"one|sub"`
|
|
}
|
|
|
|
const (
|
|
IdpTemplateMSSingleDomain = "msad_one_domain"
|
|
IdpTemplateMSMultiDomain = "msad_multi_domain"
|
|
IdpTemplateOpenLDAPSingleDomain = "openldap_one_domain"
|
|
)
|
|
|
|
var (
|
|
IdpTemplateDriver = map[string]string{
|
|
IdpTemplateMSSingleDomain: IdentityDriverLDAP,
|
|
IdpTemplateMSMultiDomain: IdentityDriverLDAP,
|
|
IdpTemplateOpenLDAPSingleDomain: IdentityDriverLDAP,
|
|
}
|
|
)
|
|
|
|
type PerformConfigInput struct {
|
|
// 更新配置的方式
|
|
// example: update
|
|
//
|
|
// | action | 含义 |
|
|
// |---------|-----------------------------------------------|
|
|
// | update | 增量更新配置 |
|
|
// | remove | 删除指定配置 |
|
|
// | replace | 全量替换配置,如果action为空,则默认为replace |
|
|
//
|
|
Action string `json:"action"`
|
|
|
|
// 配置信息
|
|
Config TConfigs `json:"config"`
|
|
}
|