Skip to content

Commit e37c6ec

Browse files
Jorgen-5Jorgen-5
andauthored
Active group added to Authentication (#438)
* Add vardef to allowed audiences * Add active group to Authentication * Formatting * Remove audiences from nais files --------- Co-authored-by: Jorgen-5 <rlj@ssb.no>
1 parent 91a5638 commit e37c6ec

File tree

5 files changed

+10
-24
lines changed

5 files changed

+10
-24
lines changed

src/main/kotlin/no/ssb/metadata/vardef/controllers/internalapi/VariableDefinitionsController.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,7 @@ class VariableDefinitionsController(
149149
}
150150

151151
val resolvedActiveGroup =
152-
activeGroup?.takeUnless { it == "null" }
153-
?: authentication.attributes[LABID_ACTIVE_GROUP] as? String
152+
(authentication.attributes[ACTIVE_GROUP] as? String)
154153
?: throw HttpStatusException(
155154
HttpStatus.BAD_REQUEST,
156155
"No active_group provided",

src/main/kotlin/no/ssb/metadata/vardef/security/VardefLabidTokenValidator.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import io.micronaut.security.token.Claims
99
import io.micronaut.security.token.jwt.validator.JsonWebTokenParser
1010
import io.micronaut.security.token.jwt.validator.ReactiveJsonWebTokenValidator
1111
import jakarta.inject.Inject
12+
import no.ssb.metadata.vardef.constants.LABID_ACTIVE_GROUP
1213
import no.ssb.metadata.vardef.constants.SSB_EMAIL
1314
import no.ssb.metadata.vardef.exceptions.InvalidActiveGroupException
1415
import no.ssb.metadata.vardef.integrations.dapla.services.DaplaTeamService
@@ -134,7 +135,7 @@ class VardefLabidTokenValidator<R : HttpRequest<*>> : ReactiveJsonWebTokenValida
134135
*
135136
* @param token
136137
* @param request
137-
* @return an [Authentication] containing the principals username and the assigned roles.
138+
* @return an [Authentication] containing the principals username, the assigned roles, the claims, and the active group.
138139
*/
139140
override fun validateToken(
140141
token: String?,
@@ -150,10 +151,12 @@ class VardefLabidTokenValidator<R : HttpRequest<*>> : ReactiveJsonWebTokenValida
150151
}.map {
151152
val username = usernameFromToken(it)
152153
logger.info("Validated LabID token for user=$username")
154+
val attributes = it.jwtClaimsSet.claims.toMutableMap()
155+
attributes["active_group"] = it.jwtClaimsSet.getStringClaim(LABID_ACTIVE_GROUP)
153156
Authentication.build(
154157
username,
155158
assignRoles(it, request),
156-
it.jwtClaimsSet.claims,
159+
attributes,
157160
)
158161
}
159162
}

src/main/kotlin/no/ssb/metadata/vardef/security/VardefTokenValidator.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ class VardefTokenValidator<R : HttpRequest<*>> : ReactiveJsonWebTokenValidator<J
123123
*
124124
* @param token
125125
* @param request
126-
* @return an [Authentication] containing the principals username and the assigned roles.
126+
* @return an [Authentication] containing the principals username, the assigned roles, the claims, and the active group.
127127
*/
128128
override fun validateToken(
129129
token: String?,
@@ -137,10 +137,12 @@ class VardefTokenValidator<R : HttpRequest<*>> : ReactiveJsonWebTokenValidator<J
137137
.filter {
138138
it.jwtClaimsSet.getStringClaim(issuerClaim) in allowedIssuers
139139
}.map {
140+
val attributes = it.jwtClaimsSet.claims.toMutableMap()
141+
attributes["active_group"] = request.parameters.get(ACTIVE_GROUP)
140142
Authentication.build(
141143
it.jwtClaimsSet.getStringClaim(usernameClaim),
142144
assignRoles(it, request),
143-
it.jwtClaimsSet.claims,
145+
attributes,
144146
)
145147
}
146148
}

src/main/resources/application-naisprod.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,4 @@
11
micronaut:
2-
security:
3-
token:
4-
jwt:
5-
claims:
6-
values:
7-
allowed-audiences:
8-
- dapla-cli
9-
- onyxia-api
10-
- vardef
112
http:
123
services:
134
dapla-team-api:

src/main/resources/application-naistest.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,4 @@
11
micronaut:
2-
security:
3-
token:
4-
jwt:
5-
claims:
6-
values:
7-
allowed-audiences:
8-
- dapla-cli
9-
- onyxia-api
10-
- vardef
112
http:
123
services:
134
dapla-team-api:

0 commit comments

Comments
 (0)