@Override
 public List<ProtocolMapperModel> getBuiltinMappers(String protocol) {
   LoginProtocolFactory providerFactory =
       (LoginProtocolFactory)
           session.getKeycloakSessionFactory().getProviderFactory(LoginProtocol.class, protocol);
   return providerFactory.getBuiltinMappers();
 }
  private static Map<String, ProtocolMapperRepresentation> getAllDefaultMappers(
      KeycloakSession session) {
    Map<String, ProtocolMapperRepresentation> allMappers =
        new HashMap<String, ProtocolMapperRepresentation>();

    List<ProviderFactory> loginProtocolFactories =
        session.getKeycloakSessionFactory().getProviderFactories(LoginProtocol.class);

    for (ProviderFactory factory : loginProtocolFactories) {
      LoginProtocolFactory loginProtocolFactory = (LoginProtocolFactory) factory;
      List<ProtocolMapperModel> currentMappers = loginProtocolFactory.getDefaultBuiltinMappers();

      for (ProtocolMapperModel protocolMapper : currentMappers) {
        ProtocolMapperRepresentation rep = ModelToRepresentation.toRepresentation(protocolMapper);
        allMappers.put(protocolMapper.getName(), rep);
      }
    }

    return allMappers;
  }
Esempio n. 3
0
  /**
   * Should not be called from an import. This really expects that the client is created from the
   * admin console.
   *
   * @param session
   * @param realm
   * @param rep
   * @param addDefaultRoles
   * @return
   */
  public static ClientModel createClient(
      KeycloakSession session,
      RealmModel realm,
      ClientRepresentation rep,
      boolean addDefaultRoles) {
    ClientModel client = RepresentationToModel.createClient(session, realm, rep, addDefaultRoles);

    if (rep.getProtocol() != null) {
      LoginProtocolFactory providerFactory =
          (LoginProtocolFactory)
              session
                  .getKeycloakSessionFactory()
                  .getProviderFactory(LoginProtocol.class, rep.getProtocol());
      providerFactory.setupClientDefaults(rep, client);
    }

    // remove default mappers if there is a template
    if (rep.getProtocolMappers() == null && rep.getClientTemplate() != null) {
      Set<ProtocolMapperModel> mappers = client.getProtocolMappers();
      for (ProtocolMapperModel mapper : mappers) client.removeProtocolMapper(mapper);
    }
    return client;
  }