Skip to content

Commit ecb1b0c

Browse files
Add tags in the idp authenticator responses.
1 parent a25fe0f commit ecb1b0c

File tree

2 files changed

+47
-34
lines changed

2 files changed

+47
-34
lines changed

components/org.wso2.carbon.identity.api.server.idp/org.wso2.carbon.identity.api.server.idp.v1/src/main/java/org/wso2/carbon/identity/api/server/idp/v1/core/ServerIdpManagementService.java

+2-24
Original file line numberDiff line numberDiff line change
@@ -2428,30 +2428,8 @@ private FederatedAuthenticatorListResponse createFederatedAuthenticatorResponse(
24282428

24292429
FederatedAuthenticatorConfig[] fedAuthConfigs = idp.getFederatedAuthenticatorConfigs();
24302430
FederatedAuthenticatorListResponse fedAuthIDPResponse = new FederatedAuthenticatorListResponse();
2431-
List<FederatedAuthenticatorListItem> authenticators = new ArrayList<>();
2432-
for (FederatedAuthenticatorConfig fedAuthConfig : fedAuthConfigs) {
2433-
FederatedAuthenticatorListItem fedAuthListItem = new FederatedAuthenticatorListItem();
2434-
fedAuthListItem.setAuthenticatorId(base64URLEncode(fedAuthConfig.getName()));
2435-
fedAuthListItem.setName(fedAuthConfig.getName());
2436-
fedAuthListItem.setIsEnabled(fedAuthConfig.isEnabled());
2437-
fedAuthListItem.setDefinedBy(FederatedAuthenticatorListItem.DefinedByEnum.valueOf(
2438-
fedAuthConfig.getDefinedByType().toString()));
2439-
FederatedAuthenticatorConfig federatedAuthenticatorConfig =
2440-
ApplicationAuthenticatorService.getInstance().getFederatedAuthenticatorByName(
2441-
fedAuthConfig.getName());
2442-
if (federatedAuthenticatorConfig != null) {
2443-
String[] tags = federatedAuthenticatorConfig.getTags();
2444-
if (ArrayUtils.isNotEmpty(tags)) {
2445-
fedAuthListItem.setTags(Arrays.asList(tags));
2446-
}
2447-
}
2448-
fedAuthListItem.setSelf(
2449-
ContextLoader.buildURIForBody(String.format(V1_API_PATH_COMPONENT + IDP_PATH_COMPONENT +
2450-
"/%s/federated-authenticators/%s", idp.getResourceId(),
2451-
base64URLEncode(fedAuthConfig.getName())))
2452-
.toString());
2453-
authenticators.add(fedAuthListItem);
2454-
}
2431+
List<FederatedAuthenticatorListItem> authenticators =
2432+
FederatedAuthenticatorConfigBuilderFactory.build(fedAuthConfigs);
24552433
fedAuthIDPResponse.setDefaultAuthenticatorId(idp.getDefaultAuthenticatorConfig() != null ? base64URLEncode(idp
24562434
.getDefaultAuthenticatorConfig().getName()) : null);
24572435
fedAuthIDPResponse.setAuthenticators(authenticators);

components/org.wso2.carbon.identity.api.server.idp/org.wso2.carbon.identity.api.server.idp.v1/src/main/java/org/wso2/carbon/identity/api/server/idp/v1/impl/FederatedAuthenticatorConfigBuilderFactory.java

+45-10
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.wso2.carbon.identity.api.server.idp.v1.model.AuthenticationType;
2626
import org.wso2.carbon.identity.api.server.idp.v1.model.Endpoint;
2727
import org.wso2.carbon.identity.api.server.idp.v1.model.FederatedAuthenticator;
28+
import org.wso2.carbon.identity.api.server.idp.v1.model.FederatedAuthenticatorListItem;
2829
import org.wso2.carbon.identity.api.server.idp.v1.model.FederatedAuthenticatorPUTRequest;
2930
import org.wso2.carbon.identity.application.common.ApplicationAuthenticatorService;
3031
import org.wso2.carbon.identity.application.common.model.FederatedAuthenticatorConfig;
@@ -38,6 +39,7 @@
3839
import org.wso2.carbon.idp.mgt.IdentityProviderManagementServerException;
3940

4041
import java.nio.charset.StandardCharsets;
42+
import java.util.ArrayList;
4143
import java.util.Arrays;
4244
import java.util.Base64;
4345
import java.util.List;
@@ -118,17 +120,10 @@ public static FederatedAuthenticator build(FederatedAuthenticatorConfig config)
118120

119121
federatedAuthenticator.setName(config.getName());
120122
federatedAuthenticator.setIsEnabled(config.isEnabled());
121-
122-
FederatedAuthenticatorConfig federatedAuthenticatorConfig =
123-
ApplicationAuthenticatorService.getInstance().getFederatedAuthenticatorByName(
124-
config.getName());
125-
if (federatedAuthenticatorConfig != null) {
126-
String[] tags = federatedAuthenticatorConfig.getTags();
127-
if (ArrayUtils.isNotEmpty(tags)) {
128-
federatedAuthenticator.setTags(Arrays.asList(tags));
129-
}
123+
String[] tags = resolveAuthenticatorTags(config);
124+
if (ArrayUtils.isNotEmpty(tags)) {
125+
federatedAuthenticator.setTags(Arrays.asList(tags));
130126
}
131-
132127
if (DefinedByType.SYSTEM == config.getDefinedByType()) {
133128
federatedAuthenticator.setDefinedBy(FederatedAuthenticator.DefinedByEnum.SYSTEM);
134129
List<org.wso2.carbon.identity.api.server.idp.v1.model.Property> properties =
@@ -141,6 +136,32 @@ public static FederatedAuthenticator build(FederatedAuthenticatorConfig config)
141136

142137
return federatedAuthenticator;
143138
}
139+
140+
/**
141+
* Builds a list of FederatedAuthenticatorListItem instances based on the given array of
142+
* FederatedAuthenticatorConfig.
143+
*
144+
* @param fedAuthConfigs Array of FederatedAuthenticatorConfig instances.
145+
* @return List of FederatedAuthenticatorListItem instances.
146+
*/
147+
public static List<FederatedAuthenticatorListItem> build(FederatedAuthenticatorConfig[] fedAuthConfigs) {
148+
149+
List<FederatedAuthenticatorListItem> authenticators = new ArrayList<>();
150+
for (FederatedAuthenticatorConfig config : fedAuthConfigs) {
151+
FederatedAuthenticatorListItem authenticatorListItem = new FederatedAuthenticatorListItem();
152+
authenticatorListItem.setName(config.getName());
153+
authenticatorListItem.setIsEnabled(config.isEnabled());
154+
authenticatorListItem.definedBy(FederatedAuthenticatorListItem.DefinedByEnum.valueOf(
155+
config.getDefinedByType().toString()));
156+
String[] tags = resolveAuthenticatorTags(config);
157+
if (ArrayUtils.isNotEmpty(tags)) {
158+
authenticatorListItem.setTags(Arrays.asList(tags));
159+
}
160+
authenticators.add(authenticatorListItem);
161+
}
162+
163+
return authenticators;
164+
}
144165

145166
private static FederatedAuthenticatorConfig createFederatedAuthenticatorConfig(Config config)
146167
throws IdentityProviderManagementClientException {
@@ -435,6 +456,20 @@ private static void resolveEndpointConfiguration(FederatedAuthenticator authenti
435456
}
436457
}
437458

459+
private static String[] resolveAuthenticatorTags(FederatedAuthenticatorConfig config) {
460+
461+
if (DefinedByType.USER == config.getDefinedByType()) {
462+
return config.getTags();
463+
464+
}
465+
FederatedAuthenticatorConfig federatedAuthenticatorConfig =
466+
ApplicationAuthenticatorService.getInstance().getFederatedAuthenticatorByName(config.getName());
467+
if (federatedAuthenticatorConfig != null) {
468+
return federatedAuthenticatorConfig.getTags();
469+
}
470+
return new String[0];
471+
}
472+
438473
/**
439474
* Config class to build FederatedAuthenticatorConfig.
440475
*/

0 commit comments

Comments
 (0)