New User Register option is not coming over UI

592 Views Asked by At

I have installed api man as defined in http://www.apiman.io/latest/download.html

I performed following instructions.

mkdir ~/apiman-1.2.5.Final
cd ~/apiman-1.2.5.Final
curl http://download.jboss.org/wildfly/10.0.0.Final/wildfly-10.0.0.Final.zip -o wildfly-10.0.0.Final.zip
curl http://downloads.jboss.org/apiman/1.2.5.Final/apiman-distro-wildfly10-1.2.5.Final-overlay.zip -o apiman-distro-wildfly10-1.2.5.Final-overlay.zip
unzip wildfly-10.0.0.Final.zip
unzip -o apiman-distro-wildfly10-1.2.5.Final-overlay.zip -d wildfly-10.0.0.Final
cd wildfly-10.0.0.Final
./bin/standalone.sh -c standalone-apiman.xml

after this i can login as a admin that is predefined and create organisation, apis and rest.

but at login page New User Registration option is not coming. here login page snap enter image description here

How can i get new user register option ? .I am using apache tomcat. Here is snap what is missing enter image description here

"Register?New User" option is not coming

2

There are 2 best solutions below

0
On BEST ANSWER

Rationale

In our WildFly distributions we use Keycloak for identity management and auth; it's all rolled into a single server including all of apiman's components and Keycloak. However, Keycloak can't run on Tomcat, so by default our Tomcat quickstart just uses tomcat's inbuilt auth mechanisms (which you can configure to use LDAP, JDBC, etc).

So, if you want Keycloak plus apiman, you need to do a little bit of extra work. However, this brings a lot of capabilities, so it's likely worth it for real deployments.

Bear in mind that this is slighly verbose to describe, but actually rather quick to implement.

Naturally, just using the WildFly all-in-one might be less hassle, especially for a quick test :-).

I'll add this to the apiman documentation shortly.

Using Keycloak IDM with apiman on Tomcat

Get Keycloak running

  • Download Keycloak, and run. Create your administrative user and log in.

  • Import the apiman Keycloak realm. This is just a demo walkthrough, you'll want to regenerate the keys and secrets for production :-).

  • For the clients apiman and apimanui, modify your Valid Redirect URIs to be the absolute URLs to your apiman instance(s) (e.g. http://myapiman.url:8080/apimanui/*).

Prepare Tomcat

The generic instructions are available in the Keycloak documentation, but I'll endeavour to provide more specialised config information.

Modify apiman

Extract apiman.war, apimanui.war, and apiman-gateway-api.war and add the following:

  • META-INF/context.xml

In apiman.war:

<Context path="/apiman">
    <Valve className="org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve"/>
</Context>

In apimanui.war

<Context path="/apimanui">
    <Valve className="org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve"/>
</Context>

In apiman-gateway-api.war

<Context path="/apiman-gateway-api">
    <Valve className="org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve"/>
</Context>
  • WEB-INF/keycloak.json

In apiman.war:

{
    "realm": "apiman",
    "resource": "apiman",
    "realm-public-key": "<YOUR REALM'S PUBLIC KEY>",
    "auth-server-url": "http://localhost:9080/auth",
    "ssl-required": "none",
    "use-resource-role-mappings": false,
    "enable-cors": true,
    "cors-max-age": 1000,
    "cors-allowed-methods": "POST, PUT, DELETE, GET",
    "bearer-only": false,
    "enable-basic-auth": true,
    "expose-token": true,
    "credentials" : {
      "secret" : "<APIMAN SECRET HERE, IF ANY>"
    },
    "connection-pool-size": 20,
    "principal-attribute": "preferred_username"
}

In apimanui.war, config as above, but with:

{
    "realm": "apiman",
    "resource": "apimanui",
    "realm-public-key": "<YOUR REALM'S PUBLIC KEY>",
    ...
    "credentials" : {
      "secret" : "<APIMANUI SECRET HERE, IF ANY>"
    },
    "principal-attribute": "preferred_username"
}

In apiman-gateway-api.war, config as above, but with:

{
    "realm": "apiman",
    "resource": "apiman-gateway-api",
    "realm-public-key": "<YOUR REALM'S PUBLIC KEY>",
    ...
    "credentials" : {
      "secret" : "<APIMAN-GATEWAY-API SECRET HERE, IF ANY>"
    },
    "principal-attribute": "preferred_username"
}
  • WEB-INF/web.xml

For all of the above, replace the login-config section with:

<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>apiman</realm-name>
</login-config>

Other issues

You may want to copy over themes (or make your own). It's rather easy, but out of the scope of this response.

0
On

if you are using apache tomcat the keycloak web application isn't deployed with the apiman tomcat overlay. Instead the users and passwords are defined in the tomcat/conf/tomcat-users.xml file, there you can include new users, but as far as i know you cant create new users via the apimanui.