use of org.wso2.carbon.identity.api.server.authenticators.v1.model.Authenticator in project identity-conditional-auth-functions by wso2-extensions.
the class JsSequenceHandlerRunner method addSubjectAuthenticator.
public void addSubjectAuthenticator(String authenticatorName, String subject, Map<String, String> claims) {
FrameworkServiceDataHolder.getInstance().getAuthenticators().removeIf(applicationAuthenticator -> applicationAuthenticator.getName().equals(authenticatorName));
MockAuthenticator authenticator = new MockAuthenticator(authenticatorName, (SubjectCallback) context1 -> {
AuthenticatedUser user = createLocalAuthenticatedUserFromSubjectIdentifier(subject);
if (claims != null) {
for (Map.Entry<String, String> entry : claims.entrySet()) {
user.getUserAttributes().put(ClaimMapping.build(entry.getKey(), entry.getKey(), entry.getValue(), false), entry.getValue());
}
}
return user;
});
FrameworkServiceDataHolder.getInstance().getAuthenticators().add(authenticator);
}
use of org.wso2.carbon.identity.api.server.authenticators.v1.model.Authenticator in project identity-api-server by wso2.
the class ServerIdpManagementService method createFederatedAuthenticator.
/**
* Create API Federated Authenticator model using internal FederatedAuthenticatorConfig.
*
* @param authenticatorId Federated Authenticator ID.
* @param identityProvider Identity Provider information.
* @return FederatedAuthenticator.
*/
private FederatedAuthenticator createFederatedAuthenticator(String authenticatorId, IdentityProvider identityProvider) {
FederatedAuthenticatorConfig[] authConfigs = identityProvider.getFederatedAuthenticatorConfigs();
if (ArrayUtils.isEmpty(authConfigs)) {
return null;
}
FederatedAuthenticatorConfig config = null;
boolean isDefaultAuthenticator = false;
String authenticatorName = base64URLDecode(authenticatorId);
for (FederatedAuthenticatorConfig authConfig : authConfigs) {
if (StringUtils.equals(authConfig.getName(), authenticatorName)) {
config = authConfig;
}
}
if (identityProvider.getDefaultAuthenticatorConfig() != null && StringUtils.equals(identityProvider.getDefaultAuthenticatorConfig().getName(), authenticatorName)) {
isDefaultAuthenticator = true;
}
FederatedAuthenticator federatedAuthenticator = new FederatedAuthenticator();
if (config != null) {
federatedAuthenticator.setAuthenticatorId(authenticatorId);
federatedAuthenticator.setName(config.getName());
federatedAuthenticator.setIsEnabled(config.isEnabled());
federatedAuthenticator.setIsDefault(isDefaultAuthenticator);
FederatedAuthenticatorConfig federatedAuthenticatorConfig = ApplicationAuthenticatorService.getInstance().getFederatedAuthenticatorByName(config.getName());
if (federatedAuthenticatorConfig != null) {
String[] tags = federatedAuthenticatorConfig.getTags();
if (ArrayUtils.isNotEmpty(tags)) {
federatedAuthenticator.setTags(Arrays.asList(tags));
}
}
List<org.wso2.carbon.identity.api.server.idp.v1.model.Property> properties = Arrays.stream(config.getProperties()).map(propertyToExternal).collect(Collectors.toList());
federatedAuthenticator.setProperties(properties);
}
return federatedAuthenticator;
}
use of org.wso2.carbon.identity.api.server.authenticators.v1.model.Authenticator in project identity-api-server by wso2.
the class ServerIdpManagementService method getFederatedAuthenticators.
/**
* Returns configured federated authenticators of a specific identity provider.
*
* @param idpId Identity provider resource ID.
* @return FederatedAuthenticatorListResponse Federated authenticator list.
*/
public FederatedAuthenticatorListResponse getFederatedAuthenticators(String idpId) {
FederatedAuthenticatorListResponse listResponse;
try {
IdentityProvider idP = IdentityProviderServiceHolder.getIdentityProviderManager().getIdPByResourceId(idpId, ContextLoader.getTenantDomainFromContext(), true);
if (idP == null) {
throw handleException(Response.Status.NOT_FOUND, Constants.ErrorMessage.ERROR_CODE_IDP_NOT_FOUND, idpId);
}
listResponse = new FederatedAuthenticatorListResponse();
FederatedAuthenticatorConfig[] fedAuthConfigs = idP.getFederatedAuthenticatorConfigs();
if (fedAuthConfigs != null) {
List<FederatedAuthenticatorListItem> fedAuthList = new ArrayList<>();
String defaultAuthenticator = null;
for (FederatedAuthenticatorConfig config : fedAuthConfigs) {
String fedAuthId = base64URLEncode(config.getName());
FederatedAuthenticatorListItem listItem = new FederatedAuthenticatorListItem();
listItem.setAuthenticatorId(fedAuthId);
listItem.setName(config.getName());
listItem.setIsEnabled(config.isEnabled());
FederatedAuthenticatorConfig federatedAuthenticatorConfig = ApplicationAuthenticatorService.getInstance().getFederatedAuthenticatorByName(config.getName());
if (federatedAuthenticatorConfig != null) {
String[] tags = federatedAuthenticatorConfig.getTags();
if (ArrayUtils.isNotEmpty(tags)) {
listItem.setTags(Arrays.asList(tags));
}
}
listItem.setSelf(ContextLoader.buildURIForBody(String.format(V1_API_PATH_COMPONENT + IDP_PATH_COMPONENT + "/%s/federated-authenticators/%s", idpId, fedAuthId)).toString());
fedAuthList.add(listItem);
if (idP.getDefaultAuthenticatorConfig() != null) {
defaultAuthenticator = base64URLEncode(idP.getDefaultAuthenticatorConfig().getName());
}
}
listResponse.setDefaultAuthenticatorId(defaultAuthenticator);
listResponse.setAuthenticators(fedAuthList);
}
} catch (IdentityProviderManagementException e) {
throw handleIdPException(e, Constants.ErrorMessage.ERROR_CODE_ERROR_RETRIEVING_IDP_AUTHENTICATORS, idpId);
}
return listResponse;
}
use of org.wso2.carbon.identity.api.server.authenticators.v1.model.Authenticator in project identity-api-server by wso2.
the class ServerIdpManagementService method updateFederatedAuthenticators.
/**
* Update federated authenticator of and IDP.
*
* @param idpId Identity Provider resource ID.
* @param authenticatorRequest Federated Authenticators Request.
* @return FederatedAuthenticatorListResponse.
*/
public FederatedAuthenticatorListResponse updateFederatedAuthenticators(String idpId, FederatedAuthenticatorRequest authenticatorRequest) {
try {
IdentityProvider idp = IdentityProviderServiceHolder.getIdentityProviderManager().getIdPByResourceId(idpId, ContextLoader.getTenantDomainFromContext(), true);
if (idp == null) {
throw handleException(Response.Status.NOT_FOUND, Constants.ErrorMessage.ERROR_CODE_IDP_NOT_FOUND, idpId);
}
// Need to create a clone, since modifying the fields of the original object, will modify the cached
// IDP object.
IdentityProvider idpToUpdate = createIdPClone(idp);
updateFederatedAuthenticatorConfig(idpToUpdate, authenticatorRequest);
IdentityProvider updatedIdp = IdentityProviderServiceHolder.getIdentityProviderManager().updateIdPByResourceId(idpId, idpToUpdate, ContextLoader.getTenantDomainFromContext());
return createFederatedAuthenticatorResponse(updatedIdp);
} catch (IdentityProviderManagementException e) {
throw handleIdPException(e, Constants.ErrorMessage.ERROR_CODE_ERROR_UPDATING_IDP, null);
}
}
use of org.wso2.carbon.identity.api.server.authenticators.v1.model.Authenticator in project identity-api-server by wso2.
the class ServiceProviderToApiModel method buildAuthStep.
private AuthenticationStepModel buildAuthStep(AuthenticationStep authenticationStep) {
AuthenticationStepModel authStep = new AuthenticationStepModel();
authStep.setId(authenticationStep.getStepOrder());
arrayToStream(authenticationStep.getFederatedIdentityProviders()).forEach(y -> authStep.addOptionsItem(new Authenticator().idp(y.getIdentityProviderName()).authenticator(y.getDefaultAuthenticatorConfig().getName())));
arrayToStream(authenticationStep.getLocalAuthenticatorConfigs()).forEach(y -> authStep.addOptionsItem(new Authenticator().idp(FrameworkConstants.LOCAL_IDP_NAME).authenticator(y.getName())));
return authStep;
}
Aggregations