View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.core.logic;
20  
21  import org.apache.syncope.common.keymaster.client.api.ServiceOps;
22  import org.apache.syncope.core.logic.init.AMEntitlementLoader;
23  import org.apache.syncope.core.logic.wa.GoogleMfaAuthAccountLogic;
24  import org.apache.syncope.core.logic.wa.GoogleMfaAuthTokenLogic;
25  import org.apache.syncope.core.logic.wa.ImpersonationLogic;
26  import org.apache.syncope.core.logic.wa.MfaTrusStorageLogic;
27  import org.apache.syncope.core.logic.wa.U2FRegistrationLogic;
28  import org.apache.syncope.core.logic.wa.WAClientAppLogic;
29  import org.apache.syncope.core.logic.wa.WAConfigLogic;
30  import org.apache.syncope.core.logic.wa.WebAuthnRegistrationLogic;
31  import org.apache.syncope.core.persistence.api.dao.AttrRepoDAO;
32  import org.apache.syncope.core.persistence.api.dao.AuthModuleDAO;
33  import org.apache.syncope.core.persistence.api.dao.AuthProfileDAO;
34  import org.apache.syncope.core.persistence.api.dao.CASSPClientAppDAO;
35  import org.apache.syncope.core.persistence.api.dao.OIDCJWKSDAO;
36  import org.apache.syncope.core.persistence.api.dao.OIDCRPClientAppDAO;
37  import org.apache.syncope.core.persistence.api.dao.SAML2IdPEntityDAO;
38  import org.apache.syncope.core.persistence.api.dao.SAML2SPClientAppDAO;
39  import org.apache.syncope.core.persistence.api.dao.SAML2SPEntityDAO;
40  import org.apache.syncope.core.persistence.api.dao.SRARouteDAO;
41  import org.apache.syncope.core.persistence.api.dao.WAConfigDAO;
42  import org.apache.syncope.core.persistence.api.entity.EntityFactory;
43  import org.apache.syncope.core.persistence.api.entity.am.ClientAppUtilsFactory;
44  import org.apache.syncope.core.provisioning.api.data.AttrRepoDataBinder;
45  import org.apache.syncope.core.provisioning.api.data.AuthModuleDataBinder;
46  import org.apache.syncope.core.provisioning.api.data.AuthProfileDataBinder;
47  import org.apache.syncope.core.provisioning.api.data.ClientAppDataBinder;
48  import org.apache.syncope.core.provisioning.api.data.OIDCJWKSDataBinder;
49  import org.apache.syncope.core.provisioning.api.data.SAML2IdPEntityDataBinder;
50  import org.apache.syncope.core.provisioning.api.data.SAML2SPEntityDataBinder;
51  import org.apache.syncope.core.provisioning.api.data.SRARouteDataBinder;
52  import org.apache.syncope.core.provisioning.api.data.WAConfigDataBinder;
53  import org.apache.syncope.core.provisioning.api.data.wa.WAClientAppDataBinder;
54  import org.apache.syncope.core.spring.security.SecurityProperties;
55  import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
56  import org.springframework.context.annotation.Bean;
57  import org.springframework.context.annotation.Configuration;
58  
59  @Configuration(proxyBeanMethods = false)
60  public class AMLogicContext {
61  
62      @ConditionalOnMissingBean
63      @Bean
64      public AMEntitlementLoader amEntitlementLoader() {
65          return new AMEntitlementLoader();
66      }
67  
68      @ConditionalOnMissingBean
69      @Bean
70      public AuthModuleLogic authModuleLogic(
71              final AuthModuleDataBinder binder,
72              final AuthModuleDAO authModuleDAO) {
73  
74          return new AuthModuleLogic(binder, authModuleDAO);
75      }
76  
77      @ConditionalOnMissingBean
78      @Bean
79      public AttrRepoLogic attrRepoLogic(
80              final AttrRepoDataBinder binder,
81              final AttrRepoDAO attrRepoDAO) {
82  
83          return new AttrRepoLogic(binder, attrRepoDAO);
84      }
85  
86      @ConditionalOnMissingBean
87      @Bean
88      public AuthProfileLogic authProfileLogic(
89              final AuthProfileDAO authProfileDAO,
90              final AuthProfileDataBinder authProfileDataBinder) {
91  
92          return new AuthProfileLogic(authProfileDAO, authProfileDataBinder);
93      }
94  
95      @ConditionalOnMissingBean
96      @Bean
97      public ClientAppLogic clientAppLogic(
98              final ServiceOps serviceOps,
99              final ClientAppUtilsFactory clientAppUtilsFactory,
100             final ClientAppDataBinder binder,
101             final CASSPClientAppDAO casSPClientAppDAO,
102             final OIDCRPClientAppDAO oidcRPClientAppDAO,
103             final SAML2SPClientAppDAO saml2SPClientAppDAO) {
104 
105         return new ClientAppLogic(
106                 serviceOps,
107                 clientAppUtilsFactory,
108                 binder,
109                 casSPClientAppDAO,
110                 oidcRPClientAppDAO,
111                 saml2SPClientAppDAO);
112     }
113 
114     @ConditionalOnMissingBean
115     @Bean
116     public OIDCJWKSLogic oidcJWKSLogic(
117             final OIDCJWKSDataBinder binder,
118             final OIDCJWKSDAO dao) {
119 
120         return new OIDCJWKSLogic(binder, dao);
121     }
122 
123     @ConditionalOnMissingBean
124     @Bean
125     public SAML2IdPEntityLogic saml2IdPEntityLogic(
126             final SAML2IdPEntityDataBinder binder,
127             final SAML2IdPEntityDAO entityDAO) {
128 
129         return new SAML2IdPEntityLogic(binder, entityDAO);
130     }
131 
132     @ConditionalOnMissingBean
133     @Bean
134     public SAML2SPEntityLogic saml2SPEntityLogic(
135             final SAML2SPEntityDataBinder binder,
136             final SAML2SPEntityDAO entityDAO) {
137 
138         return new SAML2SPEntityLogic(binder, entityDAO);
139     }
140 
141     @ConditionalOnMissingBean
142     @Bean
143     public SRARouteLogic sraRouteLogic(
144             final EntityFactory entityFactory,
145             final ServiceOps serviceOps,
146             final SecurityProperties securityProperties,
147             final SRARouteDAO routeDAO,
148             final SRARouteDataBinder binder) {
149 
150         return new SRARouteLogic(routeDAO, binder, entityFactory, serviceOps, securityProperties);
151     }
152 
153     @ConditionalOnMissingBean
154     @Bean
155     public GoogleMfaAuthAccountLogic googleMfaAuthAccountLogic(
156             final AuthProfileDAO authProfileDAO,
157             final AuthProfileDataBinder authProfileDataBinder,
158             final EntityFactory entityFactory) {
159 
160         return new GoogleMfaAuthAccountLogic(entityFactory, authProfileDAO, authProfileDataBinder);
161     }
162 
163     @ConditionalOnMissingBean
164     @Bean
165     public GoogleMfaAuthTokenLogic googleMfaAuthTokenLogic(
166             final AuthProfileDAO authProfileDAO,
167             final AuthProfileDataBinder authProfileDataBinder,
168             final EntityFactory entityFactory) {
169 
170         return new GoogleMfaAuthTokenLogic(entityFactory, authProfileDAO, authProfileDataBinder);
171     }
172 
173     @ConditionalOnMissingBean
174     @Bean
175     public ImpersonationLogic impersonationLogic(
176             final AuthProfileDAO authProfileDAO,
177             final AuthProfileDataBinder authProfileDataBinder,
178             final EntityFactory entityFactory) {
179 
180         return new ImpersonationLogic(entityFactory, authProfileDAO, authProfileDataBinder);
181     }
182 
183     @ConditionalOnMissingBean
184     @Bean
185     public U2FRegistrationLogic u2fRegistrationLogic(
186             final AuthProfileDAO authProfileDAO,
187             final AuthProfileDataBinder authProfileDataBinder,
188             final EntityFactory entityFactory) {
189 
190         return new U2FRegistrationLogic(entityFactory, authProfileDAO, authProfileDataBinder);
191     }
192 
193     @ConditionalOnMissingBean
194     @Bean
195     public MfaTrusStorageLogic mfaTrusStorageLogic(
196             final AuthProfileDAO authProfileDAO,
197             final AuthProfileDataBinder authProfileDataBinder,
198             final EntityFactory entityFactory) {
199 
200         return new MfaTrusStorageLogic(entityFactory, authProfileDAO, authProfileDataBinder);
201     }
202 
203     @ConditionalOnMissingBean
204     @Bean
205     public WAClientAppLogic waClientAppLogic(
206             final WAClientAppDataBinder binder,
207             final CASSPClientAppDAO casSPClientAppDAO,
208             final OIDCRPClientAppDAO oidcRPClientAppDAO,
209             final SAML2SPClientAppDAO saml2SPClientAppDAO) {
210 
211         return new WAClientAppLogic(binder, casSPClientAppDAO, oidcRPClientAppDAO, saml2SPClientAppDAO);
212     }
213 
214     @ConditionalOnMissingBean
215     @Bean
216     public WAConfigLogic waConfigLogic(
217             final ServiceOps serviceOps,
218             final SecurityProperties securityProperties,
219             final WAConfigDataBinder binder,
220             final WAConfigDAO waConfigDAO) {
221 
222         return new WAConfigLogic(serviceOps, binder, waConfigDAO, securityProperties);
223     }
224 
225     @ConditionalOnMissingBean
226     @Bean
227     public WebAuthnRegistrationLogic webAuthnRegistrationLogic(
228             final AuthProfileDAO authProfileDAO,
229             final AuthProfileDataBinder authProfileDataBinder,
230             final EntityFactory entityFactory) {
231 
232         return new WebAuthnRegistrationLogic(entityFactory, authProfileDAO, authProfileDataBinder);
233     }
234 }