Skip to content

Commit 44b21f6

Browse files
committed
Initial conversion to OIDC
1 parent d1f8a63 commit 44b21f6

34 files changed

Lines changed: 534 additions & 769 deletions

backend/src/main/kotlin/no/java/cupcake/Application.kt

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,13 @@ import io.ktor.server.application.ApplicationEnvironment
55
import io.ktor.server.cio.EngineMain
66
import no.java.cupcake.bring.BringService
77
import no.java.cupcake.clients.bringClient
8-
import no.java.cupcake.clients.slackBotClient
98
import no.java.cupcake.clients.sleepingPillClient
9+
import no.java.cupcake.plugins.configureAuth
1010
import no.java.cupcake.plugins.configureHTTP
1111
import no.java.cupcake.plugins.configureMonitoring
1212
import no.java.cupcake.plugins.configureRouting
13-
import no.java.cupcake.plugins.configureSecurity
1413
import no.java.cupcake.plugins.configureSerialization
15-
import no.java.cupcake.plugins.slackProvider
16-
import no.java.cupcake.slack.SlackService
14+
import no.java.cupcake.plugins.configureUserInfoRoute
1715
import no.java.cupcake.sleepingpill.SleepingPillService
1816

1917
fun main(args: Array<String>) {
@@ -34,31 +32,16 @@ fun Application.module() {
3432
configureSerialization()
3533
configureMonitoring()
3634
configureHTTP()
37-
configureSecurity(
38-
provider = slackProvider(),
39-
callback = environment.str("slack.callback"),
40-
slackService = slackService(),
41-
channelName = environment.str("slack.channel_name"),
42-
jwtConfig = environment.jwtConfig(),
35+
configureAuth(
36+
oidcConfig = environment.oidcConfig(),
4337
)
38+
configureUserInfoRoute(oidcConfig = environment.oidcConfig())
4439
configureRouting(
4540
sleepingPillService = sleepingPillService(bringService()),
4641
securityOptional = !environment.bool("jwt.enabled"),
4742
)
4843
}
4944

50-
private fun Application.slackService(): SlackService =
51-
SlackService(
52-
botClient =
53-
slackBotClient(
54-
slackBotToken = environment.config.property("slack.bot").getString(),
55-
),
56-
channel = environment.str("slack.channel"),
57-
membersUrl = environment.str("slack.members_url"),
58-
)
59-
60-
private fun Application.slackProvider() = slackProvider(environment.slackConfig())
61-
6245
private fun Application.sleepingPillService(bringService: BringService): SleepingPillService {
6346
val config = environment.sleepingPillConfig()
6447

backend/src/main/kotlin/no/java/cupcake/EnvironmentExtensions.kt

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ package no.java.cupcake
22

33
import io.ktor.server.application.ApplicationEnvironment
44
import no.java.cupcake.config.BringConfig
5-
import no.java.cupcake.config.JwtConfig
6-
import no.java.cupcake.config.SlackConfig
5+
import no.java.cupcake.config.OidcConfig
76
import no.java.cupcake.config.SleepingPillConfig
87

98
fun ApplicationEnvironment.bringConfig() =
@@ -20,21 +19,8 @@ fun ApplicationEnvironment.sleepingPillConfig() =
2019
cacheTtlSeconds = long("sleepingpill.cache_ttl_seconds"),
2120
)
2221

23-
fun ApplicationEnvironment.jwtConfig() =
24-
JwtConfig(
25-
realm = str("jwt.realm"),
26-
audience = str("jwt.audience"),
27-
secret = str("jwt.secret"),
28-
issuer = str("jwt.issuer"),
29-
redirect = str("jwt.redirect"),
30-
accessTokenLifetimeMinutes = long("jwt.access_token_lifetime_minutes"),
31-
refreshTokenLifetimeMinutes = long("jwt.refresh_token_lifetime_minutes"),
32-
)
33-
34-
fun ApplicationEnvironment.slackConfig() =
35-
SlackConfig(
36-
clientId = str("slack.client"),
37-
clientSecret = str("slack.secret"),
38-
authUrl = str("slack.authorize_url"),
39-
accessTokenUrl = str("slack.accesstoken_url"),
22+
fun ApplicationEnvironment.oidcConfig() =
23+
OidcConfig(
24+
wellKnownUrl = str("oidc.well_known_url"),
25+
expectedAzp = str("oidc.expected_azp"),
4026
)

backend/src/main/kotlin/no/java/cupcake/config/JwtConfig.kt

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package no.java.cupcake.config
2+
3+
data class OidcConfig(
4+
val wellKnownUrl: String,
5+
val expectedAzp: String,
6+
)

backend/src/main/kotlin/no/java/cupcake/config/SlackConfig.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.

backend/src/main/kotlin/no/java/cupcake/plugins/Routing.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ fun Application.configureRouting(
2525
}
2626

2727
routing {
28-
authenticate(JWT_AUTH, optional = securityOptional) {
29-
route("/api") {
28+
route("/api") {
29+
authenticate("javaBin", optional = securityOptional) {
3030
route("/conferences") {
3131
get {
3232
either {

0 commit comments

Comments
 (0)