jhipster - 在 JHipster 4.10.0 中使用 Keycloak

标签 jhipster keycloak

我使用 Jhipster 生成器 v4.10.0 生成了新应用。

我想使用由 Keycloak 提供支持的 OAuth2,该 OAuth2 在单独的(它自己的)应用程序服务器中运行,供更多应用程序使用。这意味着,不在 Docker 中。

我根据http://www.jhipster.tech/security/设置'application.yml' .. 服务器、端口、clientId、clientSecret => 重建应用程序。

mvnw -Pprod package -DskipTests

SoapUi 测试的Keycloak 功能。它像往常一样返回带有标记的 JSON 对象。


在本地主机上使用 KEYCLOAK 进行开发

key 斗篷 从 http://www.keycloak.org/downloads.html 下载 Keycloak 服务器 您可以按照文档“入门”进行操作。

我的脚步

  • 在服务器位置解压 C:\Servers\Keycloak\
  • standalone.xml => 设置 port-offset: 10000 因为应用服务器在零上运行
  • cmd cd C:\Servers\Keycloak\bin
  • 运行standalone.bat
  • 打开浏览器http://localhost:18080/auth
  • 转到管理控制台
  • 创建新领域“jhipster”
  • 我使用用户联合来添加 LDAP 用户(同步所有用户), 下一个选项是手动添加用户
  • 添加角色(JHipster 使用 ADMIN 和 USER、SYSTEM)或同步 LDAP 角色 到 key 斗篷
  • 在这个新领域创建新客户

jhipster client setting不要忘记 Web 来源处的符号 +

  • 在 Credentials 中选择 Client ID 和 secret,生成 secret 并使用 它在 application.yaml 文件中

最佳答案

@Mubasher 问题:

I deployed jhipster-app.war on WildFly10 application server. See standalone.xml setting below.

您可以添加新的扩展

<extension module="org.keycloak.keycloak-adapter-subsystem"/>

然后修改配置文件元素中的安​​全子系统。

<subsystem xmlns="urn:jboss:domain:security:1.2">
    <security-domains>
        <security-domain name="other" cache-type="default">
            <authentication>
                <login-module code="Remoting" flag="optional">
                    <module-option name="password-stacking" value="useFirstPass"/>
                </login-module>
                <login-module code="RealmDirect" flag="required">
                    <module-option name="password-stacking" value="useFirstPass"/>
                </login-module>
            </authentication>
        </security-domain>
        <security-domain name="jboss-web-policy" cache-type="default">
            <authorization>
                <policy-module code="Delegating" flag="required"/>
            </authorization>
        </security-domain>
        <security-domain name="jboss-ejb-policy" cache-type="default">
            <authorization>
                <policy-module code="Delegating" flag="required"/>
            </authorization>
        </security-domain>
        <security-domain name="jaspitest" cache-type="default">
            <authentication-jaspi>
                <login-module-stack name="dummy">
                    <login-module code="Dummy" flag="optional"/>
                </login-module-stack>
                <auth-module code="Dummy"/>
            </authentication-jaspi>
        </security-domain>
        <security-domain name="keycloak">
            <authentication>
                <login-module code="org.keycloak.adapters.jboss.KeycloakLoginModule" flag="required"/>
            </authentication>
        </security-domain>
    </security-domains>
</subsystem>

最后在 profile 元素的末尾提到这一点。

<subsystem xmlns="urn:jboss:domain:keycloak:1.1"/>

application-dev.yaml

我想你设法在这个配置文件中设置了数据库。 所以,我只向您展示安全部分。根据您的 Keycloak 领域设置,请更改客户端 ID 和密码。

security:
    basic:
        enabled: false
    oauth2:
        client:
            access-token-uri: http://localhost:18080/auth/realms/jhipster/protocol/openid-connect/token
            user-authorization-uri: http://localhost:18080/auth/realms/jhipster/protocol/openid-connect/auth
            client-id: jhipster
            client-secret: e0ceb945-9b56-42d3-af1a-f68221adddec
            client-authentication-scheme: form
            scope: openid profile email
        resource:
            user-info-uri: http://localhost:18080/auth/realms/jhipster/protocol/openid-connect/userinfo
            token-info-uri: http://localhost:18080/auth/realms/jhipster/protocol/openid-connect/token/introspect
            prefer-token-info: false
            use-resource-role-mappings: true

关于jhipster - 在 JHipster 4.10.0 中使用 Keycloak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46826838/

相关文章:

apache - 如何在 Docker 上运行的 Apache 服务器中安装 mod_auth_openidc 模块

spring-boot - Keycloak Kubernetes 401未经授权

mysql - Liquibase 抛出 "SQLException: connection is closed"

java - 如何获取Keycloak用户的角色和属性

java - JHipster JDL 未生成任何内容,因为必须传递数据库类型

spring - 调试 jHipster 应用程序

java - 在 wildfly jar (keycloak SPI) 中包含第三方库

java - 使用 Keycloak Tomcat 客户端适配器 ACS 时出现问题

jhipster - 是否可以删除后面的 Jhipster 依赖项?为什么是必要的?

jhipster - 使用时对数据库或文件夹上的文件或图像存储的任何性能建议