diff --git a/core/src/main/java/org/keycloak/representations/idm/PublishedRealmRepresentation.java b/core/src/main/java/org/keycloak/representations/idm/PublishedRealmRepresentation.java index 4f1f2ea688..20cc452e2f 100755 --- a/core/src/main/java/org/keycloak/representations/idm/PublishedRealmRepresentation.java +++ b/core/src/main/java/org/keycloak/representations/idm/PublishedRealmRepresentation.java @@ -15,34 +15,22 @@ import java.security.PublicKey; */ public class PublishedRealmRepresentation { protected String realm; - protected String self; @JsonProperty("public_key") protected String publicKeyPem; - @JsonProperty("authorization") - protected String authorizationUrl; + @JsonProperty("token-service") + protected String tokenServiceUrl; - @JsonProperty("codes") - protected String codeUrl; + @JsonProperty("account-service") + protected String accountServiceUrl; - @JsonProperty("grants") - protected String grantUrl; - - @JsonProperty("admin-role") - protected String adminRole; + @JsonProperty("admin-api") + protected String adminApiUrl; @JsonIgnore protected volatile transient PublicKey publicKey; - public String getAdminRole() { - return adminRole; - } - - public void setAdminRole(String adminRole) { - this.adminRole = adminRole; - } - public String getRealm() { return realm; } @@ -51,14 +39,6 @@ public class PublishedRealmRepresentation { this.realm = realm; } - public String getSelf() { - return self; - } - - public void setSelf(String self) { - this.self = self; - } - public String getPublicKeyPem() { return publicKeyPem; } @@ -97,28 +77,27 @@ public class PublishedRealmRepresentation { this.publicKeyPem = PemUtils.removeBeginEnd(s); } - - public String getAuthorizationUrl() { - return authorizationUrl; + public String getTokenServiceUrl() { + return tokenServiceUrl; } - public void setAuthorizationUrl(String authorizationUrl) { - this.authorizationUrl = authorizationUrl; + public void setTokenServiceUrl(String tokenServiceUrl) { + this.tokenServiceUrl = tokenServiceUrl; } - public String getCodeUrl() { - return codeUrl; + public String getAccountServiceUrl() { + return accountServiceUrl; } - public void setCodeUrl(String codeUrl) { - this.codeUrl = codeUrl; + public void setAccountServiceUrl(String accountServiceUrl) { + this.accountServiceUrl = accountServiceUrl; } - public String getGrantUrl() { - return grantUrl; + public String getAdminApiUrl() { + return adminApiUrl; } - public void setGrantUrl(String grantUrl) { - this.grantUrl = grantUrl; + public void setAdminApiUrl(String adminApiUrl) { + this.adminApiUrl = adminApiUrl; } } diff --git a/services/src/main/java/org/keycloak/services/resources/AccountService.java b/services/src/main/java/org/keycloak/services/resources/AccountService.java index 19f00712e1..3814691e70 100755 --- a/services/src/main/java/org/keycloak/services/resources/AccountService.java +++ b/services/src/main/java/org/keycloak/services/resources/AccountService.java @@ -74,6 +74,12 @@ public class AccountService { this.authManager = new AppAuthManager("KEYCLOAK_ACCOUNT_IDENTITY", tokenManager); } + public static UriBuilder accountServiceBaseUrl(UriInfo uriInfo) { + UriBuilder base = uriInfo.getBaseUriBuilder().path(RealmsResource.class).path(RealmsResource.class, "getAccountService"); + return base; + } + + private Response forwardToPage(String path, AccountPages page) { Auth auth = getAuth(false); if (auth != null) { diff --git a/services/src/main/java/org/keycloak/services/resources/PublicRealmResource.java b/services/src/main/java/org/keycloak/services/resources/PublicRealmResource.java index 944f1a99bf..81f12a2432 100755 --- a/services/src/main/java/org/keycloak/services/resources/PublicRealmResource.java +++ b/services/src/main/java/org/keycloak/services/resources/PublicRealmResource.java @@ -4,6 +4,7 @@ import org.jboss.resteasy.annotations.cache.NoCache; import org.jboss.resteasy.logging.Logger; import org.keycloak.models.RealmModel; import org.keycloak.representations.idm.PublishedRealmRepresentation; +import org.keycloak.services.resources.admin.AdminService; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -19,7 +20,6 @@ import javax.ws.rs.core.UriInfo; */ public class PublicRealmResource { protected static final Logger logger = Logger.getLogger(PublicRealmResource.class); - public static final String ADMIN_ROLE = "$REALM-ADMIN$"; @Context protected UriInfo uriInfo; @@ -30,12 +30,6 @@ public class PublicRealmResource { this.realm = realm; } - public static UriBuilder realmUrl(UriInfo uriInfo) { - UriBuilder base = uriInfo.getBaseUriBuilder() - .path(RealmsResource.class).path(RealmsResource.class, "getRealmResource"); - return base; - } - @GET @NoCache @Produces("application/json") @@ -43,38 +37,13 @@ public class PublicRealmResource { return realmRep(realm, uriInfo); } - @GET - @NoCache - @Path("html") - @Produces("text/html") - public String getRealmHtml(@PathParam("realm") String id) { - StringBuffer html = new StringBuffer(); - - String authUri = TokenService.loginPageUrl(uriInfo).build(realm.getName()).toString(); - String codeUri = TokenService.accessCodeToTokenUrl(uriInfo).build(realm.getName()).toString(); - String grantUrl = TokenService.grantAccessTokenUrl(uriInfo).build(realm.getName()).toString(); - - html.append("

Realm: ").append(realm.getName()).append("

"); - html.append("

auth: ").append(authUri).append("

"); - html.append("

code: ").append(codeUri).append("

"); - html.append("

grant: ").append(grantUrl).append("

"); - html.append("

public key: ").append(realm.getPublicKeyPem()).append("

"); - html.append(""); - - return html.toString(); - } - - public static PublishedRealmRepresentation realmRep(RealmModel realm, UriInfo uriInfo) { PublishedRealmRepresentation rep = new PublishedRealmRepresentation(); rep.setRealm(realm.getName()); - rep.setSelf(realmUrl(uriInfo).build(realm.getId()).toString()); + rep.setTokenServiceUrl(TokenService.tokenServiceBaseUrl(uriInfo).build(realm.getId()).toString()); + rep.setAccountServiceUrl(AccountService.accountServiceBaseUrl(uriInfo).build(realm.getId()).toString()); + rep.setAdminApiUrl(AdminService.adminApiUrl(uriInfo).build(realm.getId()).toString()); rep.setPublicKeyPem(realm.getPublicKeyPem()); - rep.setAdminRole(ADMIN_ROLE); - - rep.setAuthorizationUrl(TokenService.loginPageUrl(uriInfo).build(realm.getName()).toString()); - rep.setCodeUrl(TokenService.accessCodeToTokenUrl(uriInfo).build(realm.getName()).toString()); - rep.setGrantUrl(TokenService.grantAccessTokenUrl(uriInfo).build(realm.getName()).toString()); return rep; } diff --git a/services/src/main/java/org/keycloak/services/resources/admin/AdminService.java b/services/src/main/java/org/keycloak/services/resources/admin/AdminService.java index 0b1aa128b6..afe2317b41 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/AdminService.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/AdminService.java @@ -17,6 +17,7 @@ import org.keycloak.services.managers.AppAuthManager; import org.keycloak.services.managers.Auth; import org.keycloak.services.managers.RealmManager; import org.keycloak.services.managers.TokenManager; +import org.keycloak.services.resources.RealmsResource; import org.keycloak.services.resources.TokenService; import org.keycloak.services.resources.flows.Flows; @@ -75,6 +76,12 @@ public class AdminService { this.authManager = new AppAuthManager("KEYCLOAK_ADMIN_CONSOLE_IDENTITY", tokenManager); } + public static UriBuilder adminApiUrl(UriInfo uriInfo) { + UriBuilder base = uriInfo.getBaseUriBuilder().path(AdminService.class).path(AdminService.class, "getRealmsAdmin").path(RealmsAdminResource.class, "getRealmAdmin"); + return base; + } + + public static class WhoAmI { protected String userId; protected String displayName;