使用Keycloak和JHipster 4.10.0

时间:2017-10-19 09:32:02

标签: jhipster keycloak

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

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

我设置了' application.yml'根据{{​​3}} .. server,port,clientId,clientSecret =>重建应用程序。

mvnw -Pprod package -DskipTests

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

KEYCLOAK在localhost上用于开发

Keycloak 从http://www.jhipster.tech/security/下载Keycloak服务器 你可以按照文档和#34;入门"。

我的步骤

  • 在服务器位置C:\ Servers \ Keycloak \
  • 中解压缩
  • standalone.xml => set port-offset:10000,因为在零上有应用服务器运行
  • cmd cd C:\ Servers \ Keycloak \ bin
  • 运行standalone.bat
  • 打开浏览器http://www.keycloak.org/downloads.html
  • 转到管理控制台
  • 创造新领域" jhipster"
  • 我使用用户联合添加LDAP用户(同步所有用户), 下一个选项是手动添加用户
  • 添加角色(JHipster使用ADMIN和USER,SYSTEM)或同步LDAP角色 致Keycloak
  • 在这个新领域创建新客户

http://localhost:18080/auth请勿忘记网络来源的 + 符号

  • 在凭据中选择客户端ID和密码,生成密钥并使用 它在application.yaml文件中

1 个答案:

答案 0 :(得分:0)

@Mubasher问题:

  

我在WildFly10应用服务器上部署了jhipster-app.war。   请参阅下面的standalone.xml设置。

您可以添加新的扩展程序

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

然后在profile元素中修改安全子系统。

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

应用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