embedded-keycloak


License

License

Categories

Categories

KeY Data Data Formats Formal Verification Keycloak Security
GroupId

GroupId

tech.bilal
ArtifactId

ArtifactId

embedded-keycloak_2.12
Last Version

Last Version

0.0.7-beta
Release Date

Release Date

Type

Type

jar
Description

Description

embedded-keycloak
embedded-keycloak
Project URL

Project URL

https://github.com/bilal-fazlani/embedded-keycloak
Project Organization

Project Organization

tech.bilal
Source Code Management

Source Code Management

https://github.com/bilal-fazlani/embedded-keycloak

Download embedded-keycloak_2.12

How to add to project

<!-- https://jarcasting.com/artifacts/tech.bilal/embedded-keycloak_2.12/ -->
<dependency>
    <groupId>tech.bilal</groupId>
    <artifactId>embedded-keycloak_2.12</artifactId>
    <version>0.0.7-beta</version>
</dependency>
// https://jarcasting.com/artifacts/tech.bilal/embedded-keycloak_2.12/
implementation 'tech.bilal:embedded-keycloak_2.12:0.0.7-beta'
// https://jarcasting.com/artifacts/tech.bilal/embedded-keycloak_2.12/
implementation ("tech.bilal:embedded-keycloak_2.12:0.0.7-beta")
'tech.bilal:embedded-keycloak_2.12:jar:0.0.7-beta'
<dependency org="tech.bilal" name="embedded-keycloak_2.12" rev="0.0.7-beta">
  <artifact name="embedded-keycloak_2.12" type="jar" />
</dependency>
@Grapes(
@Grab(group='tech.bilal', module='embedded-keycloak_2.12', version='0.0.7-beta')
)
libraryDependencies += "tech.bilal" % "embedded-keycloak_2.12" % "0.0.7-beta"
[tech.bilal/embedded-keycloak_2.12 "0.0.7-beta"]

Dependencies

compile (9)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.12.8
com.softwaremill.retry : retry_2.12 jar 0.3.0
com.lihaoyi : requests_2.12 jar 0.1.4
com.lihaoyi : os-lib_2.12 jar 0.2.5
com.lihaoyi : upickle_2.12 jar 0.7.1
com.lihaoyi : ujson_2.12 jar 0.7.1
com.iheart : ficus_2.12 jar 1.4.3
com.typesafe.akka : akka-http_2.12 jar 10.1.5
com.typesafe.akka : akka-stream_2.12 jar 2.5.19

test (1)

Group / Artifact Type Version
org.scalatest : scalatest_2.12 jar 3.0.5

Project Modules

There are no modules declared in this project.

Embedded Keycloak

Embedded keycloak server for jvm integration testing. (developed in scala)

[Build Status

Installation

add the resolver:

resolvers += "jitpack" at "https://jitpack.io"

add the dependency:

libraryDependencies += "com.github.tmtsoftware.embedded-keycloak" %% "embedded-keycloak" % "<ADD_LATEST_VERSION_HERE>"

Usage

val keycloak = new EmbeddedKeycloak(
      KeycloakData.fromConfig, // or directly: `KeycloakData(...)`
      Settings.default) // or customize: Settings(...)

val stopHandle = await(keycloak.startServerInBackground())

//do some testing here

stopHandle.stop()

Settings

the following settings options are available.

The default settings looks like this -

Settings(port: Int = 8081,
         host: String = "0.0.0.0",
         keycloakDirectory: String = "/tmp/embedded-keycloak/",
         cleanPreviousData: Boolean = true,
         alwaysDownload: Boolean = false,
         version: String = "8.0.1")

Keycloak Data

The test data can be provided in application.conf of test scope.

For example -

embedded-keycloak{
    adminUser {
      username = admin
      password = admin
    }
    realms = [{
      name = example-realm
      realmRoles = [super-admin]
      clients = [
        {
          name = some-server
          clientType = bearer-only
          clientRoles = [server-admin, server-user]
          authorizationEnabled = true
        },
        {
          name = some-client
        }
      ]
      users = [
        {
          username = user1
          password = abcd,
          realmRoles = [super-admin]
          firstName = john
        },
        {
          username = user2
          password = abcd,
          clientRoles = [{
            clientName = some-server
            roleName = server-user
          }]
      }]
    }]
}

Or the same data can be provided directly as shown below:

    val data = KeycloakData(
      adminUser = AdminUser("admin", "admin"),
      realms = Set(
        Realm(
          name = "example-realm",
          clients = Set(
            Client(
              name = "some-server",
              clientType = "bearer-only",
              clientRoles = Set("server-admin", "server-user"),
              authorizationEnabled = true
            ),
            Client(name = "some-client")
          ),
          users = Set(
            ApplicationUser(
              username = "user1",
              firstName = "john",
              password = "abcd",
              realmRoles = Set("super-admin")
            ),
            ApplicationUser(
              username = "user2",
              password = "abcd",
              clientRoles = Set(ClientRole("some-server", "server-user"))
            )
          ),
          realmRoles = Set("super-admin")
        ))
    )

Versions

Version
0.0.7-beta
0.0.6-beta
0.0.5-beta
0.0.4-beta
0.0.1-beta