From 4eddcbac71fb02f0bc638ebcd998b379a438bcbc Mon Sep 17 00:00:00 2001 From: Albert Date: Thu, 15 Nov 2018 21:07:45 +0100 Subject: [PATCH] Change user info to token info --- .../main/java/nl/myndocs/oauth2/CallRouter.kt | 14 +++++++------- .../java/nl/myndocs/oauth2/Oauth2TokenService.kt | 7 +++---- .../main/java/nl/myndocs/oauth2/TokenService.kt | 4 ++-- .../myndocs/oauth2/config/CallRouterBuilder.kt | 16 ++++++++-------- .../oauth2/config/ConfigurationBuilder.kt | 14 +++++++------- .../identity/{UserInfo.kt => TokenInfo.kt} | 4 ++-- .../nl/myndocs/oauth2/http4k/Oauth2Server.kt | 2 +- .../nl/myndocs/oauth2/javalin/Oauth2Server.kt | 2 +- .../nl/myndocs/oauth2/sparkjava/Oauth2Server.kt | 2 +- 9 files changed, 32 insertions(+), 33 deletions(-) rename oauth2-server-core/src/main/java/nl/myndocs/oauth2/identity/{UserInfo.kt => TokenInfo.kt} (71%) diff --git a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/CallRouter.kt b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/CallRouter.kt index fb7bbb6..6fbcf73 100644 --- a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/CallRouter.kt +++ b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/CallRouter.kt @@ -6,7 +6,7 @@ import nl.myndocs.oauth2.client.AuthorizedGrantType.CLIENT_CREDENTIALS import nl.myndocs.oauth2.client.AuthorizedGrantType.PASSWORD import nl.myndocs.oauth2.client.AuthorizedGrantType.REFRESH_TOKEN import nl.myndocs.oauth2.exception.* -import nl.myndocs.oauth2.identity.UserInfo +import nl.myndocs.oauth2.identity.TokenInfo import nl.myndocs.oauth2.request.* import nl.myndocs.oauth2.token.toMap @@ -14,8 +14,8 @@ class CallRouter( private val tokenService: TokenService, val tokenEndpoint: String, val authorizeEndpoint: String, - val userInfoEndpoint: String, - private val userInfoCallback: (UserInfo) -> Map + val tokenInfoEndpoint: String, + private val tokenInfoCallback: (TokenInfo) -> Map ) { companion object { const val METHOD_POST = "post" @@ -32,7 +32,7 @@ class CallRouter( when (callContext.path) { tokenEndpoint -> routeTokenEndpoint(callContext) authorizeEndpoint -> routeAuthorizeEndpoint(callContext, authorizer) - userInfoEndpoint -> routeUserInfoEndpoint(callContext) + tokenInfoEndpoint -> routeTokenInfoEndpoint(callContext) } } @@ -208,7 +208,7 @@ class CallRouter( } } - private fun routeUserInfoEndpoint(callContext: CallContext) { + private fun routeTokenInfoEndpoint(callContext: CallContext) { if (callContext.method.toLowerCase() != METHOD_GET) { return } @@ -222,8 +222,8 @@ class CallRouter( val token = authorization.substring(7) - val userInfoCallback = userInfoCallback(tokenService.userInfo(token)) + val tokenInfoCallback = tokenInfoCallback(tokenService.tokenInfo(token)) - callContext.respondJson(userInfoCallback) + callContext.respondJson(tokenInfoCallback) } } \ No newline at end of file diff --git a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/Oauth2TokenService.kt b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/Oauth2TokenService.kt index 969d378..7ccaca3 100644 --- a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/Oauth2TokenService.kt +++ b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/Oauth2TokenService.kt @@ -8,7 +8,7 @@ import nl.myndocs.oauth2.client.ClientService import nl.myndocs.oauth2.exception.* import nl.myndocs.oauth2.identity.Identity import nl.myndocs.oauth2.identity.IdentityService -import nl.myndocs.oauth2.identity.UserInfo +import nl.myndocs.oauth2.identity.TokenInfo import nl.myndocs.oauth2.request.* import nl.myndocs.oauth2.response.TokenResponse import nl.myndocs.oauth2.scope.ScopeParser @@ -315,13 +315,12 @@ class Oauth2TokenService( } } - override fun userInfo(accessToken: String): UserInfo { + override fun tokenInfo(accessToken: String): TokenInfo { val storedAccessToken = tokenStore.accessToken(accessToken) ?: throw InvalidGrantException() val client = clientService.clientOf(storedAccessToken.clientId) ?: throw InvalidClientException() val identity = storedAccessToken.username?.let { identityService.identityOf(client, it) } - ?: throw InvalidIdentityException() - return UserInfo( + return TokenInfo( identity, client, storedAccessToken.scopes diff --git a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/TokenService.kt b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/TokenService.kt index 5d60d3e..215405e 100644 --- a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/TokenService.kt +++ b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/TokenService.kt @@ -2,7 +2,7 @@ package nl.myndocs.oauth2 import nl.myndocs.oauth2.authenticator.Authenticator import nl.myndocs.oauth2.authenticator.IdentityScopeVerifier -import nl.myndocs.oauth2.identity.UserInfo +import nl.myndocs.oauth2.identity.TokenInfo import nl.myndocs.oauth2.request.* import nl.myndocs.oauth2.response.TokenResponse import nl.myndocs.oauth2.token.AccessToken @@ -29,5 +29,5 @@ interface TokenService { identityScopeVerifier: IdentityScopeVerifier? ): AccessToken - fun userInfo(accessToken: String): UserInfo + fun tokenInfo(accessToken: String): TokenInfo } \ No newline at end of file diff --git a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/config/CallRouterBuilder.kt b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/config/CallRouterBuilder.kt index f31aec1..33732cb 100644 --- a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/config/CallRouterBuilder.kt +++ b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/config/CallRouterBuilder.kt @@ -2,18 +2,18 @@ package nl.myndocs.oauth2.config import nl.myndocs.oauth2.CallRouter import nl.myndocs.oauth2.TokenService -import nl.myndocs.oauth2.identity.UserInfo +import nl.myndocs.oauth2.identity.TokenInfo internal object CallRouterBuilder { class Configuration { var tokenEndpoint: String = "/oauth/token" var authorizeEndpoint: String = "/oauth/authorize" - var userInfoEndpoint: String = "/oauth/userinfo" - var userInfoCallback: (UserInfo) -> Map = { userInfo -> + var tokenInfoEndpoint: String = "/oauth/tokeninfo" + var tokenInfoCallback: (TokenInfo) -> Map = { tokenInfo -> mapOf( - "username" to userInfo.identity.username, - "scopes" to userInfo.scopes - ) + "username" to tokenInfo.identity?.username, + "scopes" to tokenInfo.scopes + ).filterValues { it != null } } var tokenService: TokenService? = null } @@ -29,7 +29,7 @@ internal object CallRouterBuilder { configuration.tokenService!!, configuration.tokenEndpoint, configuration.authorizeEndpoint, - configuration.userInfoEndpoint, - configuration.userInfoCallback + configuration.tokenInfoEndpoint, + configuration.tokenInfoCallback ) } \ No newline at end of file diff --git a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/config/ConfigurationBuilder.kt b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/config/ConfigurationBuilder.kt index 6acd614..e73177f 100644 --- a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/config/ConfigurationBuilder.kt +++ b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/config/ConfigurationBuilder.kt @@ -2,7 +2,7 @@ package nl.myndocs.oauth2.config import nl.myndocs.oauth2.TokenService import nl.myndocs.oauth2.authenticator.Authorizer -import nl.myndocs.oauth2.identity.UserInfo +import nl.myndocs.oauth2.identity.TokenInfo import nl.myndocs.oauth2.request.CallContext import nl.myndocs.oauth2.request.auth.BasicAuthorizer @@ -28,16 +28,16 @@ object ConfigurationBuilder { callRouterConfiguration.tokenEndpoint = value } - var userInfoEndpoint: String - get() = callRouterConfiguration.userInfoEndpoint + var tokenInfoEndpoint: String + get() = callRouterConfiguration.tokenInfoEndpoint set(value) { - callRouterConfiguration.userInfoEndpoint = value + callRouterConfiguration.tokenInfoEndpoint = value } - var userInfoCallback: (UserInfo) -> Map - get() = callRouterConfiguration.userInfoCallback + var tokenInfoCallback: (TokenInfo) -> Map + get() = callRouterConfiguration.tokenInfoCallback set(value) { - callRouterConfiguration.userInfoCallback = value + callRouterConfiguration.tokenInfoCallback = value } var authorizerFactory: (CallContext) -> Authorizer = ::BasicAuthorizer diff --git a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/identity/UserInfo.kt b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/identity/TokenInfo.kt similarity index 71% rename from oauth2-server-core/src/main/java/nl/myndocs/oauth2/identity/UserInfo.kt rename to oauth2-server-core/src/main/java/nl/myndocs/oauth2/identity/TokenInfo.kt index f34e0bd..6b91525 100644 --- a/oauth2-server-core/src/main/java/nl/myndocs/oauth2/identity/UserInfo.kt +++ b/oauth2-server-core/src/main/java/nl/myndocs/oauth2/identity/TokenInfo.kt @@ -2,8 +2,8 @@ package nl.myndocs.oauth2.identity import nl.myndocs.oauth2.client.Client -data class UserInfo( - val identity: Identity, +data class TokenInfo( + val identity: Identity?, val client: Client, val scopes: Set ) \ No newline at end of file diff --git a/oauth2-server-http4k/src/main/java/nl/myndocs/oauth2/http4k/Oauth2Server.kt b/oauth2-server-http4k/src/main/java/nl/myndocs/oauth2/http4k/Oauth2Server.kt index 402f2ec..833fc49 100644 --- a/oauth2-server-http4k/src/main/java/nl/myndocs/oauth2/http4k/Oauth2Server.kt +++ b/oauth2-server-http4k/src/main/java/nl/myndocs/oauth2/http4k/Oauth2Server.kt @@ -30,7 +30,7 @@ infix fun RoutingHttpHandler.`enable oauth2`(configurationCallback: Configuratio responseBuilder.build() }, - callRouter.userInfoEndpoint bind Method.GET to { request: Request -> + callRouter.tokenInfoEndpoint bind Method.GET to { request: Request -> val responseBuilder = ResponseBuilder() val callContext = Http4kCallContext(request, responseBuilder) callRouter.route(callContext, configuration.authorizerFactory(callContext)) diff --git a/oauth2-server-javalin/src/main/java/nl/myndocs/oauth2/javalin/Oauth2Server.kt b/oauth2-server-javalin/src/main/java/nl/myndocs/oauth2/javalin/Oauth2Server.kt index 2cc0840..b004224 100644 --- a/oauth2-server-javalin/src/main/java/nl/myndocs/oauth2/javalin/Oauth2Server.kt +++ b/oauth2-server-javalin/src/main/java/nl/myndocs/oauth2/javalin/Oauth2Server.kt @@ -26,7 +26,7 @@ fun Javalin.enableOauthServer(configurationCallback: ConfigurationBuilder.Config } } - path(callRouter.userInfoEndpoint) { + path(callRouter.tokenInfoEndpoint) { get { ctx -> val javalinCallContext = JavalinCallContext(ctx) callRouter.route(javalinCallContext, configuration.authorizerFactory(javalinCallContext)) diff --git a/oauth2-server-sparkjava/src/main/java/nl/myndocs/oauth2/sparkjava/Oauth2Server.kt b/oauth2-server-sparkjava/src/main/java/nl/myndocs/oauth2/sparkjava/Oauth2Server.kt index e8606c0..9f89796 100644 --- a/oauth2-server-sparkjava/src/main/java/nl/myndocs/oauth2/sparkjava/Oauth2Server.kt +++ b/oauth2-server-sparkjava/src/main/java/nl/myndocs/oauth2/sparkjava/Oauth2Server.kt @@ -26,7 +26,7 @@ object Oauth2Server { res.body() } - get(callRouter.userInfoEndpoint) { req, res -> + get(callRouter.tokenInfoEndpoint) { req, res -> val sparkjavaCallContext = SparkjavaCallContext(req, res) callRouter.route(sparkjavaCallContext, configuration.authorizerFactory(sparkjavaCallContext))