Known client not authorized to request a user login.
").type("text/html").build()); } diff --git a/services/src/main/java/org/keycloak/services/models/RealmManager.java b/services/src/main/java/org/keycloak/services/models/RealmManager.java deleted file mode 100755 index 77a75b3cc3c..00000000000 --- a/services/src/main/java/org/keycloak/services/models/RealmManager.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.keycloak.services.models; - -import org.picketlink.idm.IdentityManager; -import org.picketlink.idm.IdentitySession; -import org.picketlink.idm.model.Realm; -import org.picketlink.idm.model.SimpleAgent; - -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.util.concurrent.atomic.AtomicLong; - -/** - * @author Bill Burke - * @version $Revision: 1 $ - */ -public class RealmManager { - private static AtomicLong counter = new AtomicLong(1); - - public static String generateId() { - return counter.getAndIncrement() + "-" + System.currentTimeMillis(); - } - - protected IdentitySession identitySession; - - public RealmManager(IdentitySession IdentitySession) { - this.identitySession = IdentitySession; - } - - public RealmModel defaultRealm() { - return getRealm(Realm.DEFAULT_REALM); - } - - public RealmModel getRealm(String id) { - Realm existing = identitySession.findRealm(id); - if (existing == null) { - return null; - } - return new RealmModel(existing, identitySession); - } - - public RealmModel createRealm(String name) { - return createRealm(generateId(), name); - } - - public RealmModel createRealm(String id, String name) { - Realm newRealm = identitySession.createRealm(id); - IdentityManager idm = identitySession.createIdentityManager(newRealm); - SimpleAgent agent = new SimpleAgent(RealmModel.REALM_AGENT_ID); - idm.add(agent); - RealmModel realm = new RealmModel(newRealm, identitySession); - return realm; - } - - public void generateRealmKeys(RealmModel realm) { - KeyPair keyPair = null; - try { - keyPair = KeyPairGenerator.getInstance("RSA").generateKeyPair(); - } catch (NoSuchAlgorithmException e) { - throw new RuntimeException(e); - } - realm.setPrivateKey(keyPair.getPrivate()); - realm.setPublicKey(keyPair.getPublic()); - realm.updateRealm(); - } -} diff --git a/services/src/main/java/org/keycloak/services/models/RealmModel.java b/services/src/main/java/org/keycloak/services/models/RealmModel.java index 0cdf45ca017..ec69d1d1595 100755 --- a/services/src/main/java/org/keycloak/services/models/RealmModel.java +++ b/services/src/main/java/org/keycloak/services/models/RealmModel.java @@ -3,6 +3,7 @@ package org.keycloak.services.models; import org.bouncycastle.openssl.PEMWriter; import org.jboss.resteasy.security.PemUtils; import org.keycloak.representations.idm.RequiredCredentialRepresentation; +import org.keycloak.services.managers.RealmManager; import org.keycloak.services.models.relationships.RealmAdminRelationship; import org.keycloak.services.models.relationships.ResourceRelationship; import org.keycloak.services.models.relationships.RequiredCredentialRelationship; @@ -314,11 +315,12 @@ public class RealmModel { ScopeRelationship scope = new ScopeRelationship(); scope.setClient(agent); scope.setScope(role); + idm.add(scope); } - public Setauth: ").append(authUri).append("
"); diff --git a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java index cf7576d431f..ca9eb6adef0 100755 --- a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java +++ b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java @@ -2,33 +2,23 @@ package org.keycloak.services.resources; import org.jboss.resteasy.logging.Logger; import org.keycloak.representations.idm.RealmRepresentation; -import org.keycloak.representations.idm.RequiredCredentialRepresentation; -import org.keycloak.representations.idm.ResourceRepresentation; -import org.keycloak.representations.idm.RoleMappingRepresentation; -import org.keycloak.representations.idm.ScopeMappingRepresentation; -import org.keycloak.representations.idm.UserRepresentation; import org.keycloak.services.managers.AuthenticationManager; import org.keycloak.services.managers.TokenManager; -import org.keycloak.services.models.RealmManager; +import org.keycloak.services.managers.RealmManager; import org.keycloak.services.models.RealmModel; -import org.keycloak.services.models.RequiredCredentialModel; -import org.keycloak.services.models.ResourceModel; -import org.keycloak.services.models.UserCredentialModel; import org.picketlink.idm.IdentitySession; -import org.picketlink.idm.model.Attribute; import org.picketlink.idm.model.Realm; import org.picketlink.idm.model.Role; -import org.picketlink.idm.model.SimpleRole; -import org.picketlink.idm.model.SimpleUser; import org.picketlink.idm.model.User; import javax.ws.rs.Consumes; +import javax.ws.rs.GET; import javax.ws.rs.NotAuthorizedException; import javax.ws.rs.NotFoundException; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; -import javax.ws.rs.WebApplicationException; +import javax.ws.rs.Produces; import javax.ws.rs.container.ResourceContext; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; @@ -36,8 +26,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; -import java.util.HashMap; -import java.util.Map; /** * @author Bill Burke @@ -67,6 +55,7 @@ public class RealmsResource { @Path("{realm}/tokens") public TokenService getTokenService(@PathParam("realm") String id) { + logger.info("**** HERE token service****"); RealmManager realmManager = new RealmManager(identitySession); RealmModel realm = realmManager.getRealm(id); if (realm == null) { @@ -82,6 +71,7 @@ public class RealmsResource { @Path("{realm}") public RealmSubResource getRealmResource(@PathParam("realm") String id) { + logger.info("**** HERE @Path {realm} ****"); RealmManager realmManager = new RealmManager(identitySession); RealmModel realm = realmManager.getRealm(id); if (realm == null) { @@ -101,7 +91,15 @@ public class RealmsResource { identitySession.getTransaction().begin(); RealmModel realm; try { - realm = createRealm(rep); + RealmManager realmManager = new RealmManager(identitySession); + RealmModel defaultRealm = realmManager.getRealm(Realm.DEFAULT_REALM); + User realmCreator = new AuthenticationManager().authenticateToken(defaultRealm, headers); + Role creatorRole = defaultRealm.getIdm().getRole(RegistrationService.REALM_CREATOR_ROLE); + if (!defaultRealm.getIdm().hasRole(realmCreator, creatorRole)) { + logger.warn("not a realm creator"); + throw new NotAuthorizedException("Bearer"); + } + realm = realmManager.importRealm(rep, realmCreator); identitySession.getTransaction().commit(); } catch (RuntimeException re) { identitySession.getTransaction().rollback(); @@ -112,214 +110,4 @@ public class RealmsResource { .entity(RealmSubResource.realmRep(realm, uriInfo)) .type(MediaType.APPLICATION_JSON_TYPE).build(); } - - protected RealmModel createRealm(RealmRepresentation rep) { - RealmManager realmManager = new RealmManager(identitySession); - RealmModel defaultRealm = realmManager.getRealm(Realm.DEFAULT_REALM); - User realmCreator = new AuthenticationManager().authenticateToken(defaultRealm, headers); - Role creatorRole = defaultRealm.getIdm().getRole(RegistrationService.REALM_CREATOR_ROLE); - if (!defaultRealm.getIdm().hasRole(realmCreator, creatorRole)) { - logger.warn("not a realm creator"); - throw new NotAuthorizedException("Bearer"); - } - verifyRealmRepresentation(rep); - - RealmModel realm = realmManager.createRealm(rep.getRealm()); - realmManager.generateRealmKeys(realm); - realm.addRealmAdmin(realmCreator); - realm.setName(rep.getRealm()); - realm.setEnabled(rep.isEnabled()); - realm.setTokenLifespan(rep.getTokenLifespan()); - realm.setAccessCodeLifespan(rep.getAccessCodeLifespan()); - realm.setSslNotRequired(rep.isSslNotRequired()); - realm.setCookieLoginAllowed(rep.isCookieLoginAllowed()); - realm.updateRealm(); - - - MapTo Authorize, please login below
"); } else { - Set