1

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

我执行了以下说明。

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

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

但在登录页面新用户注册选项不来。这里登录页面快照 在此处输入图像描述

我如何获得新用户注册选项?.我正在使用apache tomcat。这是快照缺少的东西 在此处输入图像描述

“注册?新用户”选项未出现

4

2 回答 2

3

基本原理

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

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

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

自然,仅使用 WildFly 一体机可能会少一些麻烦,尤其是对于快速测试而言:-)。

我很快就会把它添加到 apiman 文档中。

在 Tomcat 上使用 Keycloak IDM 和 apiman

让 Keycloak 运行

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

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

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

准备Tomcat

Keycloak 文档中提供了通用说明,但我将努力提供更专业的配置信息。

修改apiman

提取apiman.war, apimanui.war,apiman-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>

其他问题

您可能想要复制主题(或制作自己的主题)。这很容易,但超出了此响应的范围。

于 2016-05-19T19:47:25.097 回答
1

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

于 2016-05-13T20:53:07.323 回答