新用户注册选项不会出现 UI

New User Register option is not coming over UI

我已经安装了 api 中定义的 man http://www.apiman.io/latest/download.html

我执行了以下说明。

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

在此之后我可以作为预定义的管理员登录并创建组织,apis 和休息。

但是在登录页面新用户注册选项没有出现。 这里登录页面快照

如何获得新用户注册选项?。我正在使用 apache tomcat。 这是缺少的快照

"Register?New User" 选项没有出现

如果您使用的是 apache tomcat,keycloak Web 应用程序不会与 apiman tomcat 覆盖一起部署。相反,用户和密码在 tomcat/conf/tomcat-users.xml 文件中定义,您可以在其中包含新用户,但据我所知您无法通过 apimanui.

创建新用户

理由

在我们的 WildFly 发行版中,我们使用 Keycloak 进行身份管理和身份验证;它全部集成到一个服务器中,包括所有 apiman 的组件和 Keycloak。但是,Keycloak 无法在 Tomcat 上 运行,因此默认情况下,我们的 Tomcat 快速入门仅使用 tomcat 的内置身份验证机制(您可以将其配置为使用 LDAP,JDBC, 等等).

所以,如果你想要Keycloak加apiman,你需要做一些额外的工作。但是,这带来了很多功能,因此对于实际部署来说可能是值得的。

请记住,这描述起来有点冗长,但实际上实施起来相当快。

当然,仅使用 WildFly 一体机可能更省事,尤其是对于快速测试 :-)。

我会尽快将其添加到 apiman 文档中。

在 Tomcat

上将 Keycloak IDM 与 apiman 结合使用

获取密钥斗篷运行宁

  • Download Keycloak 和 运行。创建您的管理用户并登录。

  • Import the apiman Keycloak realm。这只是一个演示演练,您需要重新生成用于生产的密钥和机密 :-)。

  • 对于客户端 apimanapimanui,将您的 有效重定向 URI 修改为您的 apiman 实例的绝对 URL( s)(例如 http://myapiman.url:8080/apimanui/*)。

准备Tomcat

通用说明在 Keycloak documentation 中可用,但我会尽力提供更专业的配置信息。

修改apiman

提取 apiman.warapimanui.warapiman-gateway-api.war 并添加以下内容:

  • META-INF/context.xml

apiman.war中:

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

apimanui.war

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

apiman-gateway-api.war

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

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"
}

apimanui.war 中,配置如上,但是:

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

apiman-gateway-api.war 中,配置如上,但是:

{
    "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

对于以上所有内容,将 login-config 部分替换为:

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

其他问题

您可能需要复制主题 (or make your own)。比较简单,但不在本次回复范围内。