Skip to content

Commit a731a10

Browse files
(#143) Added support for smartcard params for pam and ldap (#144)
* (#143) Added support for smartcard params for pam and ldap Fixes #143 * Added releng stuff
1 parent 574d7cc commit a731a10

File tree

10 files changed

+98
-1
lines changed

10 files changed

+98
-1
lines changed

CHANGELOG

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
* Wed Apr 10 2024 Mike Riddle <[email protected]> - 7.10.0
2+
- Added the pam_cert_auth parameter to the pam service
3+
- Added the ldap_user_cert parameter to the ldap provider
4+
- Users can now specify ldap providers via hieradata using sssd::ldap_providers
5+
16
* Wed Nov 29 2023 Virus2500 <[email protected]> - 7.9.0
27
- add domain option ldap_user_search_filter
38

REFERENCE.md

+40
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,19 @@ using an nscd module at the same time, which is the correct behavior.
6363
Full documentation of the parameters that map directly to SSSD
6464
configuration options can be found in the sssd.conf(5) man page.
6565

66+
#### Examples
67+
68+
##### sssd::provider::ldap in hieradata:
69+
70+
```puppet
71+
sssd::ldap_providers:
72+
ldap_users:
73+
ldap_access_filter: 'memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com'
74+
ldap_chpass_uri: empty
75+
ldap_access_order: 'expire'
76+
etc...
77+
```
78+
6679
#### Parameters
6780

6881
The following parameters are available in the `sssd` class:
@@ -84,6 +97,7 @@ The following parameters are available in the `sssd` class:
8497
* [`user`](#-sssd--user)
8598
* [`default_domain_suffix`](#-sssd--default_domain_suffix)
8699
* [`override_space`](#-sssd--override_space)
100+
* [`ldap_providers`](#-sssd--ldap_providers)
87101
* [`enumerate_users`](#-sssd--enumerate_users)
88102
* [`include_svc_config`](#-sssd--include_svc_config)
89103
* [`cache_credentials`](#-sssd--cache_credentials)
@@ -231,6 +245,14 @@ Data type: `Optional[String[1]]`
231245

232246
Default value: `undef`
233247

248+
##### <a name="-sssd--ldap_providers"></a>`ldap_providers`
249+
250+
Data type: `Hash`
251+
252+
This allows users to set up ldap sssd::provider::ldap resources via hieradata
253+
254+
Default value: `{}`
255+
234256
##### <a name="-sssd--enumerate_users"></a>`enumerate_users`
235257

236258
Data type: `Boolean`
@@ -937,6 +959,7 @@ The following parameters are available in the `sssd::service::pam` class:
937959
* [`debug_level`](#-sssd--service--pam--debug_level)
938960
* [`debug_timestamps`](#-sssd--service--pam--debug_timestamps)
939961
* [`debug_microseconds`](#-sssd--service--pam--debug_microseconds)
962+
* [`pam_cert_auth`](#-sssd--service--pam--pam_cert_auth)
940963
* [`reconnection_retries`](#-sssd--service--pam--reconnection_retries)
941964
* [`command`](#-sssd--service--pam--command)
942965
* [`offline_credentials_expiration`](#-sssd--service--pam--offline_credentials_expiration)
@@ -980,6 +1003,14 @@ Data type: `Boolean`
9801003

9811004

9821005

1006+
Default value: `false`
1007+
1008+
##### <a name="-sssd--service--pam--pam_cert_auth"></a>`pam_cert_auth`
1009+
1010+
Data type: `Boolean`
1011+
1012+
1013+
9831014
Default value: `false`
9841015

9851016
##### <a name="-sssd--service--pam--reconnection_retries"></a>`reconnection_retries`
@@ -2735,6 +2766,7 @@ The following parameters are available in the `sssd::provider::ldap` defined typ
27352766
* [`ldap_default_bind_dn`](#-sssd--provider--ldap--ldap_default_bind_dn)
27362767
* [`ldap_default_authtok_type`](#-sssd--provider--ldap--ldap_default_authtok_type)
27372768
* [`ldap_default_authtok`](#-sssd--provider--ldap--ldap_default_authtok)
2769+
* [`ldap_user_cert`](#-sssd--provider--ldap--ldap_user_cert)
27382770
* [`ldap_user_object_class`](#-sssd--provider--ldap--ldap_user_object_class)
27392771
* [`ldap_user_name`](#-sssd--provider--ldap--ldap_user_name)
27402772
* [`ldap_user_uid_number`](#-sssd--provider--ldap--ldap_user_uid_number)
@@ -2985,6 +3017,14 @@ Data type: `Optional[String[1]]`
29853017

29863018
Default value: `simplib::lookup('simp_options::ldap::bind_pw', { 'default_value' => undef })`
29873019

3020+
##### <a name="-sssd--provider--ldap--ldap_user_cert"></a>`ldap_user_cert`
3021+
3022+
Data type: `Optional[String[1]]`
3023+
3024+
3025+
3026+
Default value: `undef`
3027+
29883028
##### <a name="-sssd--provider--ldap--ldap_user_object_class"></a>`ldap_user_object_class`
29893029

29903030
Data type: `Optional[String[1]]`

manifests/init.pp

+17
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@
2727
# @param user
2828
# @param default_domain_suffix
2929
# @param override_space
30+
# @param ldap_providers
31+
# This allows users to set up ldap sssd::provider::ldap resources via hieradata
32+
# @example sssd::provider::ldap in hieradata:
33+
# sssd::ldap_providers:
34+
# ldap_users:
35+
# ldap_access_filter: 'memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com'
36+
# ldap_chpass_uri: empty
37+
# ldap_access_order: 'expire'
38+
# etc...
39+
#
3040
# @param enumerate_users
3141
# Have SSSD list and cache all the users that it can find on the remote system
3242
#
@@ -100,6 +110,7 @@
100110
Optional[String[1]] $user = undef,
101111
Optional[String[1]] $default_domain_suffix = undef,
102112
Optional[String[1]] $override_space = undef,
113+
Hash $ldap_providers = {},
103114
Boolean $enable_files_domain = true,
104115
Boolean $enumerate_users = false,
105116
Boolean $cache_credentials = true,
@@ -145,4 +156,10 @@
145156
content => '-w /etc/sssd/ -p wa -k CFG_sssd'
146157
}
147158
}
159+
160+
$ldap_providers.each |$key, $value| {
161+
sssd::provider::ldap { $key:
162+
* => $value,
163+
}
164+
}
148165
}

manifests/provider/ldap.pp

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
# @param ldap_default_bind_dn
5050
# @param ldap_default_authtok_type
5151
# @param ldap_default_authtok
52+
# @param ldap_user_cert
5253
# @param ldap_user_object_class
5354
# @param ldap_user_name
5455
# @param ldap_user_uid_number
@@ -205,6 +206,7 @@
205206
Optional[String[1]] $ldap_default_bind_dn = simplib::lookup('simp_options::ldap::bind_dn', { 'default_value' => undef }),
206207
Optional[Sssd::LdapDefaultAuthtok] $ldap_default_authtok_type = undef,
207208
Optional[String[1]] $ldap_default_authtok = simplib::lookup('simp_options::ldap::bind_pw', { 'default_value' => undef }),
209+
Optional[String[1]] $ldap_user_cert = undef,
208210
Optional[String[1]] $ldap_user_object_class = undef,
209211
Optional[String[1]] $ldap_user_name = undef,
210212
Optional[String[1]] $ldap_user_uid_number = undef,

manifests/service/pam.pp

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
# @param debug_level
1010
# @param debug_timestamps
1111
# @param debug_microseconds
12+
# @param pam_cert_auth
1213
# @param reconnection_retries
1314
# @param command
1415
# @param offline_credentials_expiration
@@ -37,6 +38,7 @@
3738
Optional[Sssd::DebugLevel] $debug_level = undef,
3839
Boolean $debug_timestamps = true,
3940
Boolean $debug_microseconds = false,
41+
Boolean $pam_cert_auth = false,
4042
Integer $reconnection_retries = 3,
4143
Optional[String] $command = undef,
4244
Integer $offline_credentials_expiration = 0,

metadata.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "simp-sssd",
3-
"version": "7.9.0",
3+
"version": "7.10.0",
44
"author": "SIMP Team",
55
"summary": "Manages SSSD",
66
"license": "Apache-2.0",

spec/classes/init_spec.rb

+16
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,22 @@
8888
.with_order(99999)
8989
}
9090
end
91+
92+
context 'with ldap provider' do
93+
let(:params) {{
94+
:ldap_providers => {
95+
:test_provider => {
96+
:ldap_access_filter => 'memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com',
97+
}
98+
}
99+
}}
100+
101+
it {
102+
is_expected.to create_sssd__provider__ldap('test_provider').with( {
103+
:ldap_access_filter => 'memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com',
104+
} )
105+
}
106+
end
91107
end
92108
end
93109
end

spec/defines/provider/ldap_spec.rb

+11
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,17 @@
104104
is_expected.to create_sssd__config__entry("puppet_provider_#{title}_ldap").with_content(expected)
105105
end
106106
end
107+
108+
context 'with ldap_user_cert set' do
109+
let(:params) {{ :ldap_user_cert => 'userCertificate;binary' }}
110+
111+
it { is_expected.to compile.with_all_deps }
112+
it {
113+
is_expected.to create_sssd__config__entry("puppet_provider_#{title}_ldap")
114+
.with_content(%r(ldap_user_cert = userCertificate;binary))
115+
}
116+
end
117+
107118
context 'with app_pki_ca_dir set' do
108119
let(:params) {{ :app_pki_ca_dir => '/path/to/ca' }}
109120

templates/provider/ldap.erb

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
'ldap_default_bind_dn',
1212
'ldap_default_authtok_type',
1313
'ldap_default_authtok',
14+
'ldap_user_cert',
1415
'ldap_user_object_class',
1516
'ldap_user_name',
1617
'ldap_user_uid_number',

templates/service/pam.erb

+3
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,6 @@ pam_trusted_users = <%= @pam_trusted_users %>
2828
<% if @pam_public_domains -%>
2929
pam_public_domains = <%= @pam_public_domains %>
3030
<% end -%>
31+
<% if @pam_cert_auth -%>
32+
pam_cert_auth = True
33+
<% end -%>

0 commit comments

Comments
 (0)