1
1
"""
2
- Copyright (c) 2017, 2019 , Oracle Corporation and/or its affiliates. All rights reserved .
2
+ Copyright (c) 2017, 2021 , Oracle Corporation and/or its affiliates.
3
3
Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
4
4
"""
5
5
import glob
23
23
_class_name = 'DomainInfoDiscoverer'
24
24
_logger = PlatformLogger (discoverer .get_discover_logger_name ())
25
25
26
+ ROLE_NAME_LIST = {
27
+ "AppTester" : '?weblogic.entitlement.rules.OwnerIDDGroup(AppTesters)' ,
28
+ 'Operator' : '?weblogic.entitlement.rules.AdministrativeGroup(Operators)' ,
29
+ 'Admin' : '?weblogic.entitlement.rules.AdministrativeGroup(Administrators)' ,
30
+ 'Deployer' : '?weblogic.entitlement.rules.AdministrativeGroup(Deployers)' ,
31
+ 'Monitor' : '?weblogic.entitlement.rules.AdministrativeGroup(Monitors)' ,
32
+ 'OracleSystemRole' : 'Grp(OracleSystemGroup)' ,
33
+ 'CrossDomainConnector' : '?weblogic.entitlement.rules.OwnerIDDGroup(CrossDomainConnectors)' ,
34
+ 'Anonymous' : 'Grp(everyone)' ,
35
+ 'AdminChannelUser' : '?weblogic.entitlement.rules.OwnerIDDGroup(AdminChannelUsers)'
26
36
37
+ }
27
38
class DomainInfoDiscoverer (Discoverer ):
28
39
"""
29
40
Discover extra information about the domain. This information is not what is stored in domain
@@ -48,6 +59,8 @@ def discover(self):
48
59
discoverer .add_to_model_if_not_empty (self ._dictionary , model_top_folder_name , result )
49
60
model_top_folder_name , result = self .get_user_env_scripts ()
50
61
discoverer .add_to_model_if_not_empty (self ._dictionary , model_top_folder_name , result )
62
+ model_top_folder_name , result = self .get_roles ()
63
+ discoverer .add_to_model_if_not_empty (self ._dictionary , model_top_folder_name , result )
51
64
_logger .exiting (class_name = _class_name , method_name = _method_name )
52
65
return self ._dictionary
53
66
@@ -124,3 +137,35 @@ def get_user_env_scripts(self):
124
137
125
138
_logger .exiting (class_name = _class_name , method_name = _method_name , result = entries )
126
139
return model_constants .DOMAIN_SCRIPTS , entries
140
+
141
+ def get_roles (self ):
142
+ _method_name = 'get_roles'
143
+ _logger .entering (class_name = _class_name , method_name = _method_name )
144
+ model = dict ()
145
+ model_folder = model_constants .WLS_ROLES
146
+ if self ._wlst_mode == WlstModes .ONLINE :
147
+ props = []
148
+
149
+ cmo = self ._wlst_helper .get_cmo ()
150
+ realms = cmo .getSecurityConfiguration ().getRealms ()
151
+ for r in realms :
152
+ rms = r .getRoleMappers ()
153
+ for rm in rms :
154
+ if rm .getName () == 'XACMLRoleMapper' :
155
+ c = rm .listAllRoles (500 )
156
+
157
+ while rm .haveCurrent (c ):
158
+ props .append (rm .getCurrentProperties (c ))
159
+ rm .advance (c )
160
+ rm .close (c )
161
+
162
+ for entry in props :
163
+ if 'RoleName' in entry and entry ['RoleName' ] != '**' :
164
+ role_name = entry ['RoleName' ]
165
+ role_expression = entry ['Expression' ]
166
+ if role_name not in ROLE_NAME_LIST or ROLE_NAME_LIST [role_name ] != role_expression :
167
+ # put it in the model
168
+ model [role_name ] = dict ()
169
+ model [role_name ][model_constants .EXPRESSION ] = role_expression
170
+ return model_folder , model
171
+
0 commit comments